python - 通过 Python 3 的 input() 的输入被自动转换为整数
问题描述
我正在通过 Python 3 中的 input() 使用命令行读取文本文件,并且文件中出现数字的行被自动视为整数,从而导致错误。我的理解是 input() 不应该进行任何评估,并且应该将它们视为字符串。是什么导致了这种行为,我该如何预防?
编辑:举个更简洁的例子,如果我的代码只是简单地读取
cases = input()
print(type(cases))
我的输入文件内容如下:
100
4 2
然后我输入cmd:
script.py < input_file.txt > output_file.txt
我的输出文件将包含
<type 'int'>
解决方案
@Patrick Artner 几乎可以肯定是正确的。您的代码应该在 Python 3 中按预期执行,但在 Python 2 中,您会得到您所看到的结果。
Python 3 的input()的 Python 2 等效项是raw_input()
,它将输入转换为您期望的字符串。
编辑:顺便说一句,永远不要在 Python 2 中使用input()。它评估用户的输入,因此是不安全的。(如果输入是os.system("<some really horrible command>")
怎么办?)这就是 Python 3 替换它的原因。
推荐阅读
- php - 用正则表达式动态替换条件块的一部分
- laravel - 数据表添加按列搜索会改变表的大小
- windows - 自定义吐司按钮大小
- c++ - 如何加速从 C++ 数组中读取元素
- karate - 如何在空手道报告中隐藏 Javascript 方法代码
- python - 从 fit_transform 中检索特征名称?
- python - 子进程调用函数
- django - DRF 简单 jwt 从用户实例获取身份验证令牌或更改用户名和密码组合
- javascript - typescript 类型检查具有误导性,typescript 没有报告此类型错误
- r - 在 Rcpp 中将 const mat 转换为 NumericVector