[英]Input multiple files in python using * via the command line
我正在嘗試創建一個Python腳本,該腳本可以通過命令行接收多個文件作為輸入。
現在,我正在使用一種使用文件作為輸入的方法:
我現在將使用以下python function_name.py input_file.txt
調用該函數: python function_name.py input_file.txt
使用如下代碼:
import sys
def function_name():
input = sys.argv[1]
with open(input,'r') as afile:
read_data = afile.read()
if __name__ == '__main__':
function_name()
但是,如何使用當前目錄中的所有.txt文件作為輸入?
即: python function_name.py *.txt
或: python function_name.py ./*/*.txt
我想對每個輸入文件執行相同的操作。
sys.argv是傳遞給腳本的參數列表。 第一個將是腳本的名稱(scriptname.py),其余將是您在其后鍵入的任何內容。
如果您運行python function_name.py *.txt
,它將被外殼擴展為python function_name.py 1.txt 2.txt blah.txt wibble.com.exe.extension.txt
(或此文件中的任何文件名)目錄。
所以,我會做這樣的事情:
def function_name():
for filename in sys.argv[1:]:
print "You specified %s on the commandline - do something with it here!" % filename
[1:]
部分的意思是,忽略索引1之前的任何參數(即從第二個開始),否則您將處理python腳本!
根據經驗,我可能會將其作為參數傳遞給函數,因此:
import sys
def function_name(filestoprocess):
for input in filestoprocess:
print "Processing %s" % input
with open(input,'r') as afile:
read_data = afile.read()
if __name__ == '__main__':
function_name(sys.argv[1:])
您可能要簽出glob模塊。 您可以將命令行輸入glob.glob
,它將為您提供與發送的通配符匹配的文件列表。然后,您可以根據需要對其進行處理
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.