如何从终端获取python脚本的输入文件?

Hel*_*Man 19 python

我有一个python脚本,它使用文本文件并操纵文件中的数据并输出到另一个文件.基本上我希望它适用于任何文本文件输入.现在我从文件中读取,然后将输出打印到屏幕.我想要输出文件.

因此,用户可以键入以下内容并测试任何文件:

cat input_file.txt | python script.py > output_file.txt.
Run Code Online (Sandbox Code Playgroud)

如何在我的脚本中实现这一点?谢谢.

cat是linux中的命令.我不知道它是如何工作的.

小智 33

执行此操作的最佳方法可能是将输入和输出文件作为python脚本的参数调用:

import sys
inFile = sys.argv[1]
outFile = sys.argv[2]
Run Code Online (Sandbox Code Playgroud)

然后,您可以读入所有数据,进行操作,并写出结果:

with open(inFile,'r') as i:
    lines = i.readlines()

processedLines = manipulateData(lines)

with open(outFile,'w') as o:
    for line in processedLines:
        o.write(line)
Run Code Online (Sandbox Code Playgroud)

您可以通过运行来调用此程序 python script.py input_file.txt output_file.txt

如果你绝对必须将数据传递给python(实际上不推荐),请使用 sys.stdin.readlines()


Sti*_*cky 7

此方法(您的问题)描述了从 STDIN 读取数据:

cat input_file.txt | python script.py

解决方案script.py::

import sys
for line in sys.stdin:
    print line
Run Code Online (Sandbox Code Playgroud)

上述解决方案中的方法描述了使用 python 调用获取参数参数:

python script.py input_file.txt

解决方案script.py::

import sys
with open(sys.argv[1], 'r') as file:
    for line in file:
        print line
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!