我正在使用argparse模块,我有一个连续附加的日志文件。我想打开args.file,对内容做一些事情,然后关闭它并在一段时间后再打开它。
一段代码示例:
import argparse
import time
parser = argparse.ArgumentParser()
parser.add_argument('file',type=file)
args = parser.parse_args()
for _ in range(3):
data = args.file.read()
print data
time.sleep(3)
请注意,args.file.seek(0)在这里不是解决方案。我可以用args.file.close()关闭文件但是如何再打开它?
我可以使filename-argument只是文件名的正常字符串,但我想知道一个解决方案,保持参数类型为文件名。
答案 0 :(得分:1)
parser.add_argument('file',type=file)
并不代表the argument is to be a file
。这意味着
value = file(astring)
args.file = value
type
参数是对字符串进行操作的函数。在Python3中,file
已被删除;相当于:
parser.add_argument('file',type=open)
有一个argparse.FileType
类可用于打开具有已定义模式的文件;它还识别-
值。这在采用输入和输出的小脚本中很有用,而且几乎没有。但通常最好自己打开文件,最好是在with
上下文中,以确保它在不再使用时关闭。
parser.add_argument('file_name')
args = parser.parse_args()
for _ in range(3):
with open(args.file_name) as f:
data = f.read()
print data
time.sleep(3)
如果无法打开文件,Filetype
为您做的是给出'nice'argparse错误消息。例如,如果名称在命令行中输入错误。
答案 1 :(得分:0)
您可以使用
重新打开它args.file = open(args.file.name)