我有一个脚本,用户包含输入和输出文件的路径名。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("i", help = "input path")
parser.add_argument("o", help = "output path")
args = parser.parse_args()
file_input = args.input
file_output = args.output
现在,我想确保用户创建一个文本文件的输出文件,扩展名为.txt
。
(1)我可以通过错误告诉用户他们必须使用txt扩展名。
(2)我可以检查是否使用了.txt
扩展名。如果没有,我只想添加它。
第一个相对简单:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("i", help = "input path")
parser.add_argument("o", help = "output path")
args = parser.parse_args()
file_input = args.input
file_output = args.output
if file_output.endswith("txt") != True:
raise argparse.ArgumentTypeError('File must end in extension .txt!')
如何完成后者?
答案 0 :(得分:2)
您可以定义添加所需扩展名的type
函数,例如
def txtname(astr):
if not astr.endswith('.txt'):
astr += '.txt'
return astr
In [724]: parser=argparse.ArgumentParser()
In [725]: parser.add_argument('-i',type=txtname);
In [726]: parser.add_argument('-o',type=txtname);
In [728]: parser.parse_args(['-i','inname','-o','oname.txt'])
Out[728]: Namespace(i='inname.txt', o='oname.txt')
如果您不喜欢某些扩展名或文件名形式,该函数也可能引发ValueError。