2011-11-30 104 views
2

我正在運行一個在Windows上編譯的Python程序,它接收文件作爲輸入,但在傳遞文件名時出現問題。如何從蟒蛇的cmd輸入中提取文件名

foo.py:

def main(): 
    args = sys.argv[1:] 
    for i in args: 
    print i 

但是當我編譯和從命令行調用它

\python foo.py *.html 

它直接給我的*.html的結果,我希望看到匹配的列表字符串。

任何人都熟知PLZ :)

+0

您正在使用什麼殼呢?許多(如BASH)會在調用'python'之前自動將'* .html'擴展到匹配的字符串中。它的工作原理是 –

回答

4

你需要使用一種叫做glob的東西。對於單個文件名,你正在做的是好的。但是如果你想循環遍歷一個文件模式,那麼使用glob。它基本上是用於文件

import glob 

glob.glob('*.html') #return all html files in curr dir 
glob.glob('*')  # lists all files in the current directory python is running in 
glob.glob('*.jpg') # returns all jpeg images 
glob.glob('[a-z]????.*') # lists all files starting with a letter, followed by 4 characters (numbers, letters) and any ending. 

所以你的情況正則表達式 -

import glob 
def main(): 
    args = sys.argv[1:] 
    for file in glob.glob(args): 
     print i 
+0

。 Tkxxxxxxxxxxxxxxxxxxxx – user1038662

+0

@ user1038662很高興與大家分享我的知識。如果此答案對您有幫助,請將其作爲選定答案(左側的綠色勾號)。幫助社區。謝謝。 –

0

使用glob模塊將允許你形成正確的路徑。