2017-08-02 60 views
0

我想使用arg解析模塊一次打開多個文件。只有打開一個文件的代碼。幫助我打開多個文件。在python中使用arg解析模塊讀取多個文件

import argparse 
import csv 
parser = argparse.ArgumentParser() 
parser.add_argument('filename',type=argparse.FileType('r'), help='open a certain file',nargs='*') 
args = parser.parse_args() 
file_name=args.filename 
next(file_name) 
dic=csv.DictReader(file_name,delimiter=',') 
for reading in dic: 
    print(reading) 
+1

你嘗試過什麼?一些循環?顯示一些努力。 – Y0da

+0

我有超過100個帶.txt擴展名的文件,我只是想用關鍵字year打開文件。例如[lahore_weather_1996_Dec.txt]。我想遍歷所有文件並打開包含關鍵字1996的所有文件.i是空白的,不知道該怎麼做。 –

+0

你的方法打開文件句柄。您需要文件名稱,並在過濾器匹配時手動打開。 –

回答

0

問題:幫我打開多個文件。 ...想開使用關鍵字一年文件

使用文件路徑使用通配符關鍵字參數,例如:

注意:如果與你的文件夾名稱衝突您必須從文件路徑中提取文件名部分並匹配文件名。

import argparse, glob, csv 
parser = argparse.ArgumentParser() 
parser.add_argument('filepath', help='Path to File, could have Wildcards', nargs=1) 
parser.add_argument('keyword', help='Keyword in Filepath', nargs=1) 
args = parser.parse_args() 

# Use glob to expand the Wildcards 
# Loop the List of File Path 
for fpath in glob.glob(args.filepath[0]): 

    # Condition True if Keyword in Filepath 
    if fpath.find(args.keyword[0]) >= 0: 
     print('MATCH({})'.format(fpath)) 

     # Open this File an process it 
     with open(fpath) as fh: 
      dic = csv.DictReader(fh, delimiter=',') 
      for reading in dic: 
       print(reading) 

使用

python DictReader.py *.txt 1996 

測試使用Python 3.4.2

+0

感謝兄弟你解決了我的問題 –

+0

[當有人回答我的問題時該怎麼辦?](http://stackoverflow.com/help/someone-answers) – stovfl