因此,您使用了Python的“内置函数”,大概是这样的:
file_object = open('filename')for something in file_object: some stuff here
这通过在文件对象上调用 迭代器 来读取文件,而该 迭代器 恰巧从文件返回下一行。
您可以改用:
file_object = open('filename')lines = file_object.readlines()
它将行从当前文件位置读取到列表中。
现在,
sys.stdin这只是另一个文件对象,它恰好在程序启动之前由Python打开。您可以根据自己的意愿来处理该文件对象,但这与任何其他文件对象并没有什么不同,只是您不需要
open。
for something in sys.stdin: some stuff here
将遍历标准输入,直到到达文件末尾。这样:
lines = sys.stdin.readlines()
您的第一个问题实际上是关于使用文件对象的不同方式的。
其次,它从哪里读取?它正在从文件描述符0(零)读取。在Windows上,它是文件句柄0(零)。默认情况下,文件描述符/句柄0连接到控制台或tty,因此实际上是从键盘读取的。但是,通常可以通过外壳(如bash或cmd.exe)使用以下语法将其
重定向 :
myprog.py < input_file.txt
这会将文件描述符零更改为读取文件而不是键盘。在UNIX或Linux中,这使用底层调用
dup2()。看了你的程序文档,了解更多有关重定向(或者
mandup2,如果你是勇敢的)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)