我正在運行一個在Windows上編譯的Python程序,它接收文件作爲輸入,但在傳遞文件名時出現問題。如何從蟒蛇的cmd輸入中提取文件名
foo.py:
def main():
args = sys.argv[1:]
for i in args:
print i
但是當我編譯和從命令行調用它
\python foo.py *.html
它直接給我的*.html
的結果,我希望看到匹配的列表字符串。
任何人都熟知PLZ :)
我正在運行一個在Windows上編譯的Python程序,它接收文件作爲輸入,但在傳遞文件名時出現問題。如何從蟒蛇的cmd輸入中提取文件名
foo.py:
def main():
args = sys.argv[1:]
for i in args:
print i
但是當我編譯和從命令行調用它
\python foo.py *.html
它直接給我的*.html
的結果,我希望看到匹配的列表字符串。
任何人都熟知PLZ :)
你需要使用一種叫做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
。 Tkxxxxxxxxxxxxxxxxxxxx – user1038662
@ user1038662很高興與大家分享我的知識。如果此答案對您有幫助,請將其作爲選定答案(左側的綠色勾號)。幫助社區。謝謝。 –
使用glob
模塊將允許你形成正確的路徑。
您正在使用什麼殼呢?許多(如BASH)會在調用'python'之前自動將'* .html'擴展到匹配的字符串中。它的工作原理是 –