Python 如何在输入时读取行

Python 如何在输入时读取行,python,python-3.x,for-loop,Python,Python 3.x,For Loop,因此,在我的linux终端中,我键入python3main.py input.txt>output.txt input.txt包含: This is line 1 This is line 2 This is another line 如何逐行检查并打印出每一行,使我的output.txt看起来像下面的输出?从本质上说,我只是想问,我是如何逐行阅读的?我无法使用fopen,因为我正在制作类似stdin的input.txt This is line 1 --- This is line 2 --

因此,在我的linux终端中,我键入
python3main.py input.txt>output.txt

input.txt包含:

This is line 1
This is line 2
This is another line
如何逐行检查并打印出每一行,使我的
output.txt
看起来像下面的输出?从本质上说,我只是想问,我是如何逐行阅读的?我无法使用
fopen
,因为我正在制作类似stdin的
input.txt

This is line 1
---
This is line 2
---
This is another line
---


我的问题与其他问题不同,因为这里我没有使用
open()
打开文件。我正在以
input.txt
的形式输入标准输入。正如您在命令
input.txt>output.txt
中所看到的那样。因此,我无法使用open。

通过此命令行,
python3 main.py input.txt>output.txt,这将执行您想要的操作:

import sys

for line in open(sys.argv[1]):
    print(line.rstrip('\n'))
    print('---')

但是,您的shell语法很混乱。您希望
input.txt
连接到stdin,但这将被写入
python3 main.pyoutput.txt
(请注意,我看到您的编辑中可能有小于号的
的副本,但您感到困惑。
input.txt
是一个参数。
output.txt
连接到stdout。如果您想将
input.txt
连接到stdin,您可以编写
@wjandrea不,您没有收到作为参数的文件。I无法使用
sys.argv
,因为我的命令是
python3 main.py input.txt>output.txt
。请注意command@wjandrea当我使用
sys.argv
时,它里面没有
input.txt
。它只有
main.py
和你给出的命令行,
sys.argv
将是
['main.py','input.txt']
import fileinput

for line in fileinput.input():
    print(line.rstrip('\n'))
    print('---')