Tho*_*hew 1 python gzip argparse
type=argparse.FileType()我可以通过将 argparse 更改为某些 gzip 类型来直接使用 argparse 打开 gzip 文件吗?它不在文档中,所以我不确定 argparse 是否支持压缩文件类型......
首先,type参数是一个函数或其他可将字符串转换为其他内容的可调用函数。就这样。
argparse.FileType是工厂类,最终会做一些接近于:
def filetype(astring):
mode = 'r' # or 'w' etc.
try:
f = open(astring, mode)
except IOError:
raise argparse.ArgumentError('')
return f
Run Code Online (Sandbox Code Playgroud)
换句话说,它将命令行中的字符串转换为打开的文件。
您可以编写一个type打开zipped文件的类似函数。
FileType只是一种方便,以及如何编写自定义类型函数或类的示例。对于接受输入文件、执行某些操作并写入输出文件的小型脚本程序来说,这很方便。它还处理'-'参数,就像 shell 程序处理 stdin/out 的方式一样。
其缺点type是它会打开一个文件(如果是写入模式则创建),但不提供自动关闭。您必须这样做,或者等待脚本结束并让解释器这样做。无论您是否需要,都会创建一个“默认”输出文件。
因此,更安全的方法是接受文件名,可能需要进行一些测试,然后使用您自己的with上下文进行打开/关闭。当然,您也可以使用 gzip 文件来做到这一点。