簡體   English   中英

通過命令行使用*在python中輸入多個文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM