2024-04-19 17:45:17 发布
网友
我想一次更改几个文件,iff我可以写入所有文件。我想知道是否可以将多个打开的调用与with语句组合起来:
with
try: with open('a', 'w') as a and open('b', 'w') as b: do_something() except IOError as e: print 'Operation failed: %s' % e.strerror
如果这不可能,这个问题的优雅解决方案会是什么样子?
对于一次打开多个文件或长文件路径,在多行上进行拆分可能会很有用。从@Sven Marnach在评论中建议的Python Style Guide到另一个答案:
with open('/path/to/InFile.ext', 'r') as file_1, \ open('/path/to/OutFile.ext', 'w') as file_2: file_2.write(file_1.read())
只要用,替换and,就完成了:
,
and
try: with open('a', 'w') as a, open('b', 'w') as b: do_something() except IOError as e: print 'Operation failed: %s' % e.strerror
从Python2.7开始(或者分别是3.1),您可以编写
with open('a', 'w') as a, open('b', 'w') as b: do_something()
在早期版本的Python中,有时可以使用 ^{}来嵌套上下文管理器。不过,对于打开多个文件,这并不能像预期的那样工作——有关详细信息,请参阅链接的文档。
在少数情况下,您希望同时打开可变数量的文件,可以使用^{},从Python 3.3版开始:
with ExitStack() as stack: files = [stack.enter_context(open(fname)) for fname in filenames] # Do something with "files"
大多数情况下,您有一组可变的文件,但您可能希望逐个打开它们。
对于一次打开多个文件或长文件路径,在多行上进行拆分可能会很有用。从@Sven Marnach在评论中建议的Python Style Guide到另一个答案:
只要用
,
替换and
,就完成了:从Python2.7开始(或者分别是3.1),您可以编写
在早期版本的Python中,有时可以使用 ^{} 来嵌套上下文管理器。不过,对于打开多个文件,这并不能像预期的那样工作——有关详细信息,请参阅链接的文档。
在少数情况下,您希望同时打开可变数量的文件,可以使用^{} ,从Python 3.3版开始:
大多数情况下,您有一组可变的文件,但您可能希望逐个打开它们。
相关问题 更多 >
编程相关推荐