由于我的代码中存在一些奇怪的行为,我无法从python程序中的.txt文件读取输入。我跑我的python脚本是这样的: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一行行?”,这个问题问了重复约如何来管,这个问题,而另一方面,是大约为什么代码的行为很奇怪,当从一个文件管道
可能重复[如何管道输入到python逐行从Linux程序?](https://stackoverflow.com/questions/17658512/how-to-pipe-input-to-python-line-by- line-from-linux-program) – 0TTT0
@OTTTO我不这么认为,但是,我会看看它只是为了确保:) thx – mocqoro
如果你记录'repr(tmp)',输入 - 也就是说,您的文件*包含的数据与您在键盘上输入的数据不同)将是显而易见的。 –