2013-01-15 23 views
0

我是python腳本編程的新手。我有一個腳本,我希望能夠在目錄中的所有文件上運行。我在this thread發現非常有用的建議。但是,我很難確定如何格式化實際腳本,以便它在命令提示符中檢索我想要運行腳本的文件的文件名,例如「python script.py filename。*」我試過我最擅長查看Python文檔和本站的論壇,並且已經空了(我可能只是不知道我應該搜索什麼關鍵字)。在Python中使用「python scriptname.py filename」打開文件

我目前能夠在一個文件上一次運行我的腳本,並使用下面的代碼以新的文件擴展名輸出它,但這樣我一次只能執行一個文件。我希望能夠遍歷使用整個目錄「基因。*」:

InFileName = 'GENE.303' 

InFile = open(InFileName, 'r') #opens a pipeline to the file to be read line by line 

OutFileName = InFile + '.phy' 

OutFile = open(OutFileName, 'w') 

我能做些什麼來代碼來讓自己通過類似於在做目錄使用迭代this case?謝謝!

回答

1

您正在尋找:

import sys 
InFileName = sys.argv[1] 

documentation

對於更復雜的東西,看看optparse和​​模塊(後者是可取的,但只適用於較新版本的Python)。

+0

正是我需要的。非常感謝! – Micrasema

0

你有好幾個選擇使用Python處理文件的列表:


您可以使用命令行的shell擴展設備通過多個文件名到您的腳本,然後遍歷command line arguments

import sys 

def process_file(fname): 
    with open(fname) as f: 
     for line in f: 
      # TODO: implement 
      print line 

for fname in sys.argv[1:]: 
    process_file(fname) 

,並調用它像:

python my_script.py * # expands to all files in the directory 

您還可以使用glob module做這種擴張:

import glob 

for fname in glob.glob('*'): 
    process_file(fname) 
+0

也工作。謝謝! – Micrasema