【发布时间】:2017-10-20 01:34:57
【问题描述】:
由于我的代码中有一些奇怪的行为,我无法从 python 程序中的 .txt 文件读取输入。我正在像这样运行我的 python 脚本:
python3 file.py < input.txt
我的 python 文件(file.py)如下所示:
inDATA = ''
for i in range(7):
tmp = str(input())
print(tmp)
inDATA = "X" + inDATA + tmp
print(inDATA)
print(inDATA)
我的输入文件(input.txt)如下:
1
2
3
4
5
6
7
当我运行我的 python 并从控制台输入输入 (1\n2\n3...) 时,我得到了预期的输出:
1
X1
2
XX12
3
XXX123
4
XXXX1234
5
XXXXX12345
6
XXXXXX123456
7
XXXXXXX1234567
XXXXXXX1234567
但是,当我运行 python3 file.py < input.txt 时,我得到了
1
X1
2
2X1
3
3XX1
4
4XXX1
5
5XXXX1
6
6XXXXX1
7
7XXXXXX1
7XXXXXX1
有人知道导致这种行为的原因吗?
我也尝试在 python2 中使用 python file.py < input.txt 运行它(并将 input() 更改为 raw_input()),但没有效果。
编辑: 这个问题不是“如何从 linux 程序逐行通过管道将输入输入到 python?”的重复,该问题询问了 如何 管道,另一方面,这个问题是关于为什么当从文件管道时代码表现得很奇怪
【问题讨论】:
-
@OTTTO 我不这么认为,但是,我会看看它以确保 :) thx
-
如果您记录
repr(tmp),差异(输入之间的差异——即您的文件包含不同数据的确切方式与您在键盘上输入的内容)将很明显。 -
@CharlesDuffy 好的,我去看看,谢谢!
-
@CharlesDuffy 谢谢!我的问题是我的文件在每一行的末尾都有一个 \r,所以我做了一些快速的谷歌搜索,发现我必须使用
.rstrip()来删除它:)
标签: python python-3.5