2017-10-11 43 views
2

目前,我使用​​输出以下文件:我怎么能默认没有指向一个路径名的argparse?

import argparse 
.... 
parser = argparse.ArgumentParser(description='do cool stuff') 
parser.add_argument('--output_text_file',     
    default="outputs/output_file1.txt", 
        help='file path for the output text file') 

这已经是一个可选参数。但是,我希望默认选项为do not output anything。如果用户想要文件输出,他们可以用上面的路径名称调用参数,例如`--output_text_file“outputs/my_text.txt”

通常情况下,正确的做法是什么?

我怀疑,如果我使用:

default="" 

上面会有一个错误。

回答

4

很简单,只是省略了默认:

parser.add_argument('--output-text-file') 

在指定参数时,检查是否output_text_file is None该名称将始终存在

+0

>在args来的文件路径的跨平台的价值,检查output_text_file是否为无。这个名字将永远存在。 你的意思是,在包中脚本的顶部定义这个变量?我可能不会完全关注你 – ShanZhengYang

+0

它只是意味着在你产生输出的代码部分,放置一个条件分支来检查'如果args.output_text_file不是None:'first。 – wim

+0

我明白了,谢谢 – ShanZhengYang

1

您可以将您的默认设置为os.devnull,它相当于一个空设备

parser.add_argument('--output_text_file', 
        default=os.devnull, 
        help='file path for the output text file') 
+0

这是第三方软件,所以做这个假设有点困难 – ShanZhengYang

+0

'os.devnull'是找到'/ dev/null'的正确方法。 – wim

相关问题