Python Argparse正在重新打开文件。

Python Argparse正在重新打开文件。,python,io,argparse,Python,Io,Argparse,我使用的是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.fi

我使用的是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()关闭该文件,但如何再次打开它


我可以将文件名参数设置为文件名的普通字符串,但我想知道一种将argumenttype保留为文件名的解决方案

您可以使用

args.file = open(args.file.name)

您可以使用重新打开它

args.file = open(args.file.name)
并不意味着,
参数是一个文件
。这意味着

value = file(astring)
args.file = value
type
参数是对字符串进行操作的函数。在Python3
中,文件
已被删除;相当于:

parser.add_argument('file',type=open)
有一个
argparse.FileType
类,可用于以定义的模式打开文件;它还识别
-
值。这在接受输入和输出的小型脚本中非常有用,其他功能很少。但一般来说,最好是自己打开文件,最好是在
上下文中打开,以便确保不再使用时关闭文件

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错误消息。例如,如果名称在命令行中输入错误

并不意味着,
参数是一个文件
。这意味着

value = file(astring)
args.file = value
type
参数是对字符串进行操作的函数。在Python3
中,文件
已被删除;相当于:

parser.add_argument('file',type=open)
有一个
argparse.FileType
类,可用于以定义的模式打开文件;它还识别
-
值。这在接受输入和输出的小型脚本中非常有用,其他功能很少。但一般来说,最好是自己打开文件,最好是在
上下文中打开,以便确保不再使用时关闭文件

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错误消息。例如,如果名称在命令行中输入错误。

我认为使用字符串类型并每次打开文件更干净。我认为使用字符串类型并每次打开文件更干净。