【发布时间】:2017-01-13 22:47:18
【问题描述】:
我想将文件名作为字符串解析到我的脚本中,而不是直接将文件转换为对象。
这是一个示例代码,test.py:
import argparse
import os.path
def is_valid_file(parser, arg):
if not os.path.exists(arg):
parser.error("The file %s does not exist! Use the --help flag for input options." % arg)
else:
return open(arg, 'r')
parser = argparse.ArgumentParser(description='test')
parser.add_argument("-test", dest="testfile", required=True,
help="test", type=lambda x: is_valid_file(parser, x))
args = parser.parse_args()
print args.testfile
testfile 是一个.txt 文件,其中包含:1,2,3,4
原则上希望print args.testfile 将调用的testfile 名称作为字符串返回:
$ python test.py -test test.txt
>> "test.txt"
为了实现这一点,我需要阻止 argparser 将 test.txt 转换为对象。我该怎么做?
非常感谢!
【问题讨论】:
-
你试过
parser.add_argument("-test", dest="testfile", required=True, help="test") -
感谢 Jean-François,我之前编写了一个函数来检查文件是否存在,从代码中删除它可以解决问题。
-
上述函数:#_____ def is_valid_file(parser, arg): if not os.path.exists(arg): parser.error("文件%s不存在!使用--输入选项的帮助标志。” % arg) else: return open(arg, 'r') #_______
标签: python string filenames argparse