我坚持的代码示例:
import sys
with open(sys.argv[1],'r') as infile:
num = 0
for line in infile:
num += 1
print num, line,
我刚刚开始使用Python并完成了最基本的基础知识,但是阅读一些课堂笔记我不太明白这一部分(粘贴在上面)。 with
如何运作以及它在这做什么? as
似乎与with
做了一些事情,但我无法完成,而且与此相比,我在网上看到的内容没有意义。解释它在这种特殊情况下的使用方式确实会有所帮助。
此代码也在我的笔记的输入/输出部分的开头,代码如何使用输入和输出?
答案 0 :(得分:1)
with
与context managers一起使用。在这种情况下,被管理的资源是必须关闭的开放infile
。即使在块内引发异常,退出with
块时文件也将关闭。 as
与with
一起使用,为上下文管理器命名。 as
子句是可选的。
有关详细信息,请阅读以下资源:
sys.argv
是一个列表,其中包含运行脚本时传递给脚本的命令行参数。在这种情况下,假设sys.argv[1]
命名文件的路径以供阅读。传统上,sys.argv[0]
是脚本名称,因此sys.argv[1]
实际上是第一个参数。
答案 1 :(得分:1)
是的,with
和as
关键字都是Python with-statement的一部分。
sys.argv[1]
可能是文件的路径。使用with语句打开文件可确保在控件离开with语句的代码块时自动关闭该文件。此外,open
返回的文件对象可通过名称infile
访问。
换句话说,这段代码:
with open(sys.argv[1],'r') as infile:
...
告诉Python:
在sys.argv[1]
。
将名称infile
分配给此文件对象。
当我们离开以下代码块(由...
表示)时自动关闭文件。
等效代码为:
import sys
infile = open(sys.argv[1],'r')
num = 0
for line in infile:
num += 1
print num, line,
infile.close()