use*_*419 2 python with-statement
我试图弄清楚打开python文件的最佳方法是基于它的类型.
例如,我有一些像这样的基本东西,但它对我来说似乎并不"pythonic",我觉得它在某种程度上可以重构和编写得更清洁;
def openfile(filename):
if read_file_from_top:
if not filename.endswith('.gz'):
with open(filename, 'r') as infile:
for line in infile:
# do something
else:
with gzip.open(filename, 'r') as infile:
for line in infile:
# do something
elif read_file_from_bottom:
if not filename.endswith('.gz'):
with open(filename, 'r') as infile:
for line in infile:
# do something
else:
with gzip.open(filename, 'r') as infile:
for line in infile:
# do something
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点,也许使用发电机?谢谢.
你应该将开头和阅读分开:
def openfile(filename, mode='r'):
if filename.endswith('.gz'):
return gzip.open(filename, mode)
else:
return open(filename, mode)
with openfile(filename, 'r') as infile:
for line in infile:
# do something
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
412 次 |
| 最近记录: |