如何使用Python读取.gz压缩或非压缩文件?
- 内容介绍
- 文章标签
- 相关推荐
本文共计319个文字,预计阅读时间需要2分钟。
目录要求示例代码注解方法Pythonic 方法需求编写一个接口,支持读取压缩文件和未压缩文件
示例代码pythonimport osimport gzip
filename=sys.argv[1]
if not os.path.exists(filename): print(文件不存在)else: if filename.endswith('.gz'): with gzip.open(filename, 'rb') as file: data=file.read() print(data.decode('utf-8')) else: with open(filename, 'r') as file: print(file.read())
目录
- 需求
- 示例代码
- 笨办法
- Pythonic方法
需求
要写一个接口,同时支持压缩和未压缩文件读入
示例代码
笨办法
importosimportgzip
filename=sys.argv[1]
ifnotfilename.endswith('.gz'):
withopen(filename,'r')asinfile:
forlineininfile:
#dosomething
else:
withgzip.open(filename,'r')asinfile:
forlineininfile:
#dosomething
代码一长,肯定很难看。尝试写成函数。
Pythonic方法
defopenfile(filename,mode='r'):iffilename.endswith('.gz'):
returngzip.open(filename,mode)
else:
returnopen(filename,mode)
withopenfile(filename,'r')asinfile:
forlineininfile:
#dosomething
stackoverflow.com/questions/41525690/open-file-depending-on-whether-its-gz-or-not
作者:Bioinfarmer
若要及时了解动态信息,请关注同名微信公众号:Bioinfarmer。
本文共计319个文字,预计阅读时间需要2分钟。
目录要求示例代码注解方法Pythonic 方法需求编写一个接口,支持读取压缩文件和未压缩文件
示例代码pythonimport osimport gzip
filename=sys.argv[1]
if not os.path.exists(filename): print(文件不存在)else: if filename.endswith('.gz'): with gzip.open(filename, 'rb') as file: data=file.read() print(data.decode('utf-8')) else: with open(filename, 'r') as file: print(file.read())
目录
- 需求
- 示例代码
- 笨办法
- Pythonic方法
需求
要写一个接口,同时支持压缩和未压缩文件读入
示例代码
笨办法
importosimportgzip
filename=sys.argv[1]
ifnotfilename.endswith('.gz'):
withopen(filename,'r')asinfile:
forlineininfile:
#dosomething
else:
withgzip.open(filename,'r')asinfile:
forlineininfile:
#dosomething
代码一长,肯定很难看。尝试写成函数。
Pythonic方法
defopenfile(filename,mode='r'):iffilename.endswith('.gz'):
returngzip.open(filename,mode)
else:
returnopen(filename,mode)
withopenfile(filename,'r')asinfile:
forlineininfile:
#dosomething
stackoverflow.com/questions/41525690/open-file-depending-on-whether-its-gz-or-not
作者:Bioinfarmer
若要及时了解动态信息,请关注同名微信公众号:Bioinfarmer。

