使用 CMD 将输入文件读取到 Python 脚本
Reading input file to Python script, using CMD
我有以下问题。
我想从文件(例如 example.txt)读取输入到我的 Python 脚本(例如 script.py)。现在,我已经实现了以下代码行:
import sys
with open(sys.argv[1], 'r') as f:
contents = f.read()
而且,当我想将文件读取到此脚本时,我只需要在 CMD 中键入以下行:
python script.py example.txt
当然,它工作正常。文件 example.txt 被 script.py 读取,可以通过向 script.py.
添加简单的 print(contents) 行来检查
问题是,我必须 运行 CMD中的这段代码就像这样:
script.py < example.txt
所以,问题是,我怎样才能做到这一点?我想,这取决于 OS。在我的 Windows 10 上,出现错误:
Traceback (most recent call last):
File "script.py", line 2, in <module>
with open(sys.argv[1], 'r') as f:
IndexError: list index out of range
我不是在寻求解决方案(但它会很好),但我只是想知道我应该在哪里寻找解决方案。
script.py < example.txt
将文件内容发送到可以通过 sys.stdin
访问的标准输入。以下作品:
import sys
# First try supporting commands formatted like: script.py example.txt
if len(sys.argv) > 1:
with open(sys.argv[1]) as f:
contents = f.read()
# Now try supporting: script.py < example.txt
elif sys.stdin:
contents = ''.join(sys.stdin)
# If both methods failed, throw a user friendly error
else:
raise Exception('Please supply a file')
print(contents)
但在古老的 Python 时尚中,有一个内置的图书馆可以让我们的生活变得非常轻松。该库是 fileinput,它将自动支持您提到的两种读取输入的方法:
import fileinput
contents = fileinput.input()
print( ''.join(contents) )
无论您是 script.py example.txt
还是 script.py < example.txt
还是 cat example.txt | script.py
都有效,您甚至可以 script.py example1.txt example2.txt example3.txt
并且您将收到不同文件的内容文件组合在一起。
我有以下问题。 我想从文件(例如 example.txt)读取输入到我的 Python 脚本(例如 script.py)。现在,我已经实现了以下代码行:
import sys
with open(sys.argv[1], 'r') as f:
contents = f.read()
而且,当我想将文件读取到此脚本时,我只需要在 CMD 中键入以下行:
python script.py example.txt
当然,它工作正常。文件 example.txt 被 script.py 读取,可以通过向 script.py.
添加简单的 print(contents) 行来检查问题是,我必须 运行 CMD中的这段代码就像这样:
script.py < example.txt
所以,问题是,我怎样才能做到这一点?我想,这取决于 OS。在我的 Windows 10 上,出现错误:
Traceback (most recent call last):
File "script.py", line 2, in <module>
with open(sys.argv[1], 'r') as f:
IndexError: list index out of range
我不是在寻求解决方案(但它会很好),但我只是想知道我应该在哪里寻找解决方案。
script.py < example.txt
将文件内容发送到可以通过 sys.stdin
访问的标准输入。以下作品:
import sys
# First try supporting commands formatted like: script.py example.txt
if len(sys.argv) > 1:
with open(sys.argv[1]) as f:
contents = f.read()
# Now try supporting: script.py < example.txt
elif sys.stdin:
contents = ''.join(sys.stdin)
# If both methods failed, throw a user friendly error
else:
raise Exception('Please supply a file')
print(contents)
但在古老的 Python 时尚中,有一个内置的图书馆可以让我们的生活变得非常轻松。该库是 fileinput,它将自动支持您提到的两种读取输入的方法:
import fileinput
contents = fileinput.input()
print( ''.join(contents) )
无论您是 script.py example.txt
还是 script.py < example.txt
还是 cat example.txt | script.py
都有效,您甚至可以 script.py example1.txt example2.txt example3.txt
并且您将收到不同文件的内容文件组合在一起。