2013-03-12 75 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