我有一个python脚本,它使用一个文本文件并处理来自该文件的数据并输出到另一个文件。基本上我希望它适用于任何文本文件输入。现在我从文件中读取数据,然后将输出打印到屏幕上。我想在文件中输出。如何从终端获取python脚本的输入文件?
所以用户可以键入任何文件以下和测试:
cat input_file.txt | python script.py > output_file.txt.
如何我可以在脚本实现这一点?谢谢。
cat是linux下的命令。我不知道它是如何工作的。
我有一个python脚本,它使用一个文本文件并处理来自该文件的数据并输出到另一个文件。基本上我希望它适用于任何文本文件输入。现在我从文件中读取数据,然后将输出打印到屏幕上。我想在文件中输出。如何从终端获取python脚本的输入文件?
所以用户可以键入任何文件以下和测试:
cat input_file.txt | python script.py > output_file.txt.
如何我可以在脚本实现这一点?谢谢。
cat是linux下的命令。我不知道它是如何工作的。
要做到这一点,最好的办法可能是调用输入和输出文件作为python脚本的参数:
import sys
inFile = sys.argv[1]
outFile = sys.argv[2]
然后,您可以读取所有数据,做你的操作,写出来的结果:
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)
您可以通过运行python script.py input_file.txt output_file.txt
调用这个程序。如果你绝对必须管的数据到Python(这是真的不推荐),使用sys.stdin.readlines()
为什么不推荐使用管道系统? (或者你的意思是说'猫富?|蟒蛇bar.py'和'蟒蛇bar.py
cat input_file.txt | python script.py > output_file.txt.
您可以通过具有内部input_file.txt而不是实际的文件中的所有数据,因此为了实现你的Python脚本一个大的字符串,只是把它作为一个字符串参数,并通过新的分裂字符串行字符,例如,你可以使用“\ n”作为分隔符来拆分大串并写入到OUTPUTFILE,只是做它以正常的方式
即open file
,write to the file
和close file
发送输出到文件与从文件中输入文件非常相似。
您打开文件的方式与阅读相同,但使用'w'
模式代替'r'
模式。
您通过拨打电话read
或readline
,以与拨打write
相同的方式致函文件。
这些都在本教程的Reading and Writing Files部分进行了说明。
所以,如果你现有的代码如下所示:
with open('input.txt', 'r') as f:
while True:
line = f.readline()
if not line:
break
print(line)
你只需要做到这一点:
with open('input.txt', 'r') as fin, open('output.txt', 'w') as fout:
while True:
line = fin.readline()
if not line:
break
fout.write(line)
如果你希望允许用户通过命令行上的文件名,请使用sys.argv
获取文件名,或使用argparse
进行更复杂的命令行参数分析。
例如,你可以改变的第一行是:
import sys
with open(sys.argv[1], 'r') as fin, open(sys.argv[2], 'w') as fout:
现在,你可以像这样运行程序:
python script.py input_file.txt outputfile.txt
很酷,谢谢我得到它的工作。 –
这种方法(你的问题),描述了从标准输入读取数据:
cat input_file.txt | python script.py
解决方法:script.py
:
import sys
for line in sys.stdin:
print line
的方法,上述解决方案介绍服用参数参数与蟒蛇电话:
python script.py input_file.txt
解决方法:script.py
:
import sys
with open(sys.argv[1], 'r') as file:
for line in file:
print line
希望这会有所帮助!
使用'cat foo |酒吧'是没有必要的;你总是可以做'bar
abarnert