如果将文件作为参数或stdin(如果不是)提供,是否有更具python风格的方法来打开文件?
我正在尝试编写一个python脚本,它遵循常见的unix命令行模式,即在没有给出文件名的情况下接受来自stdin的输入。这就是我一直在使用的:如果将文件作为参数或stdin(如果不是)提供,是否有更具python风格的方法来打开文件?,python,unix,command-line,Python,Unix,Command Line,我正在尝试编写一个python脚本,它遵循常见的unix命令行模式,即在没有给出文件名的情况下接受来自stdin的输入。这就是我一直在使用的: if __name__ == "__main__": if len(sys.argv) > 1: stream = open(sys.argv[1]) else: stream = sys.stdin 有没有一种更像python的方法可以做到这一点呢?类似但只有一行的解决方案 stream = sy
if __name__ == "__main__":
if len(sys.argv) > 1:
stream = open(sys.argv[1])
else:
stream = sys.stdin
有没有一种更像python的方法可以做到这一点呢?类似但只有一行的解决方案
stream = sys.argv[1] if len(sys.argv)>1 else sys.stdin
该模块非常适合此功能。我建议您将其改为更单轴:
if len(sys.argv) > 1:
sys.stdin = open(sys.argv[1])
这个怎么样
stream=sys.argv[1:] and open(sys.argv[1]) or sys.stdin
len(sys.argv)
是否总是至少有一个(脚本名为argv[0]
)?是的,这正是我想要的。谢谢对于额外的积分,您是否有任何关于如何很好地使用它的提示?-1:这会使sys.stdin改变语义(请参阅sys模块的文档),并打破预期。因此,这会降低代码的易读性(错过sys.stdin更改的人会推断程序没有读取输入文件参数)。的副本