在python中使用arg parse模块读取多个文件

时间:2017-08-02 09:50:30

标签: python

我想使用arg parse模块一次打开多个文件。这个代码只打开一个文件。帮我打开多个文件。

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 个答案:

答案 0 :(得分:1)

  

问题:帮我打开多个文件。 ...想要使用关键字年份打开文件

使用带通配符的文件路径关键字参数,例如:

  

注意:如果您的Foldername与关键字冲突,则必须从Filepath中提取文件名部分并与文件名匹配。

while(1) {
    //pulizia buffer e lettura: 4 BUFFER
                      switch(b) {
                      case 0:     
                          bzero(buffer, sizeof(buffer));
                          n = read(newsockfd, buffer, sizeof(buffer));
                          if (n < 0) errore("Errore lettura Socket");
                          b = 1;
                          break;
                      case 1:
                      bzero(buffer2, sizeof(buffer2));
                          n = read(newsockfd, buffer2, sizeof(buffer2));
                          if (n < 0) errore("Errore lettura Socket");                  
                          b = 2;
                          break;
                      case 2:
                          bzero(buffer3, sizeof(buffer3));
                          n = read(newsockfd, buffer3, sizeof(buffer3));
                          if (n < 0) errore("Errore lettura Socket");
                          b = 3;
                          break;
                      case 3:
                          bzero(buffer4, sizeof(buffer4));
                          n = read(newsockfd, buffer4, sizeof(buffer4));
                          if (n < 0) errore("Errore lettura Socket");
                          b = 0;
                          break;
                      }
    }


    //comunico con gnuplot e invio i miei dati appena letti e caricati sul buffer
    fprintf(gnuplot, "plot '-' with lines\n");

    for (i = 0; i < NUM_POINTS; i++)
    { 
        fprintf(gnuplot, "%d %d\n", i, buffer[i]); 
    }
    for (i = 0; i < NUM_POINTS; i++)
    { 
        fprintf(gnuplot, "%d %d\n", i+256, buffer2[i]); 
    }
    for (i = 0; i < NUM_POINTS; i++)
    { 
        fprintf(gnuplot, "%d %d\n", i+512, buffer3[i]); 
    }
    for (i = 0; i < NUM_POINTS; i++)
    { 
        fprintf(gnuplot, "%d %d\n", i+768, buffer4[i]); 
    } 
    fprintf(gnuplot, "e \n");
  

<强>用法

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测试:3.4.2