2013-03-12 74 views
3

我写过一个文件抓取工具,我试图扩展它。我想使用argparse来处理脚本的设置,包括在命令行中传递起始目录。Python:通过argparse传递一个目录

例子:/var/some/directory/

我已经得到了其他几个参数来工作,但是我无法在此目录中传递正确。我不在乎它是否有一个标志(例如-d /path/to/start/),但我需要确保至少这是使用参数,因为它是脚本运行的唯一必需选项。

代码示例:

parser = argparse.ArgumentParser(description='py pub crawler...') 
parser.add_argument('-v', '--verbose', help='verbose output from crawler', action="store_true") 
parser.add_argument('-d', '--dump', help='dumps and replaces existing dictionaries', action="store_true") 
parser.add_argument('-f', '--fake', help='crawl only, nothing stored to DB', action="store_true") 

args = parser.parse_args() 

if args.verbose: 
    verbose = True 
if args.dump: 
    dump = True 
if args.fake: 
    fake = True 
+0

你能证明你的代码?这应该是一件非常容易的事情......也许看到你的代码将帮助我们理解你很难过的事情。 – mgilson 2013-03-12 17:37:06

+0

我没有任何东西可以通过目录。我已经尝试了各种选择,但都得到了值得保留的地方。 – frankV 2013-03-12 17:40:20

回答

3

只需添加:

parser.add_argument('directory',help='directory to use',action='store') 

args = parser.parse_args()前行。从命令行一个简单的测试表明,它(在脚本的末尾打印args)正确的事:

$ python test.py /foo/bar/baz 
Namespace(directory='/foo/bar/baz', dump=False, fake=False, verbose=False) 
$ python test.py 
usage: test.py [-h] [-v] [-d] [-f] directory 
test.py: error: too few arguments 
+0

我可以直接使用''directory''作为从那一刻起持有我的路径的变量吗? – frankV 2013-03-12 17:46:16

+0

@frankV - 它将成为'args.directory',但如果你愿意,你可以很简单地执行'directory = args.directory'。 – mgilson 2013-03-12 17:47:39

+0

你是对的。我知道!谢谢! – frankV 2013-03-12 17:48:52