首页 > 解决方案 > 通过 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'>

标签: pythonpython-3.xwindows

解决方案


@Patrick Artner 几乎可以肯定是正确的。您的代码应该在 Python 3 中按预期执行,但在 Python 2 中,您会得到您所看到的结果。

Python 3 的input()的 Python 2 等效项是raw_input(),它将输入转换为您期望的字符串。

编辑:顺便说一句,永远不要在 Python 2 中使用input()。它评估用户的输入,因此是不安全的。(如果输入是os.system("<some really horrible command>")怎么办?)这就是 Python 3 替换它的原因。


推荐阅读