我有一个以以下方式结束的Python脚本:
if __name__ == "__main__":
if len(sys.argv) == 2:
file = open(sys.argv[1])
text = file.readline()
... #more statements
这在我输入以下内容时有效:$ python3 script.py my_file.txt
但是,我想对其进行更改,以便我的脚本可以接受来自标准输入(甚至是文本文件)的文本。这就是我想要做的:
$ ./script.py < my_file.txt
我认为我需要使用sys.stdin.read()
(或者也许是sys.stdin.readlines()
)。您能告诉我我需要从原始脚本中更改什么吗?
对于这看起来很基础,我感到很抱歉,但是我是Python的新手,所以很难发现两者之间的区别。
答案 0 :(得分:1)
这就是您所说的,您无需打开文件。
致电file.readline()
而不是致电sys.stdin.readline()
。
您可以将其设置为“ nice”,例如:
file = sys.stdin if use_stdin else open(sys.argv[1])
答案 1 :(得分:0)
有一个很酷的模块可以用于此!假设您要按行进行处理:
import fileinput
for line in fileinput.input():
process_line(line)