wer*_*ika 13 python file-io with-statement
而不是这个:
FILE = open(f)
do_something(FILE)
FILE.close()
Run Code Online (Sandbox Code Playgroud)
最好使用它:
with open(f) as FILE:
do_something(FILE)
Run Code Online (Sandbox Code Playgroud)
如果我有这样的东西怎么办?
if f is not None:
FILE = open(f)
else:
FILE = None
do_something(FILE)
if FILE is not None:
FILE.close()
Run Code Online (Sandbox Code Playgroud)
当do_something也有一个"如果文件是无"的条款,而且还做一些有用的事情在这种情况下-我不希望只是跳过do_something如果FILE是无.
是否有一种合理的方式将其转换为/作为形式?或者我只是想以错误的方式解决可选文件问题?
jdi*_*jdi 16
如果你只是这样写:
if f is not None:
with open(f) as FILE:
do_something(FILE)
else:
do_something(f)
Run Code Online (Sandbox Code Playgroud)
(file是一个内置的顺便说一句)
更新
下面是一个时髦的方法,可以使用一个不会崩溃的可选None进行动态上下文:
from contextlib import contextmanager
none_context = contextmanager(lambda: iter([None]))()
# <contextlib.GeneratorContextManager at 0x1021a0110>
with (open(f) if f is not None else none_context) as FILE:
do_something(FILE)
Run Code Online (Sandbox Code Playgroud)
它创建一个返回None值的上下文.的with意愿或者农产品文件作为文件的对象,或无类型.但是无类型将有适当的__exit__
mad*_*n25 13
从 Python 3.7 开始,你也可以这样做
from contextlib import nullcontext
with (open(file) if file else nullcontext()) as FILE:
# Do something with `FILE`
pass
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅官方文档。
| 归档时间: |
|
| 查看次数: |
1744 次 |
| 最近记录: |