【问题标题】:How to read in multiple files separately from multiple directories in python如何从python中的多个目录分别读取多个文件
【发布时间】:2014-12-02 14:48:51
【问题描述】:

我有 x 个目录,它们是 Star_{v},v=0 到 x。 我在每个目录中有 2 个 csv 文件,一个带有“epoch”一词,一个没有。 如果其中一个 csv 文件中包含“epoch”一词,则需要通过一组代码发送,否则通过另一组代码发送。 我认为字典可能是要走的路,但这部分代码有点混乱

directory_dict={}

for var in range(0, len(subdirectory)):
#var refers to the number by which the subdirectories are labelled by Star_0, Star_1 etc. 

    directory_dict['Star_{v}'.format(v=var)]=directory\\Star_{var}
    #directory_dict['Star_0'], directory_dict['Star_1'] etc.

    read_csv(f) for f in os.listdir('directory_dict[Star_{var}') if f.endswith(".csv")
    #reads in all the files in the directories(star{v}) ending in csv.
    if 'epoch' in open(read_csv[0]).read():
    #if the word epoch is in the csv file then it is 
        directory_dict[Star_{var}][read] = csv.reader(read_csv[0])
        directory_dict[Star_{var}][read1] = csv.reader(read_csv[1])
    else:
        directory_dict[Star_{var}][read] = csv.reader(read_csv[1])
        directory_dict[Star_{var}][read1] = csv.reader(read_csv[0])

【问题讨论】:

    标签: python csv dictionary directory


    【解决方案1】:

    在处理 csvs 时,您应该使用 csv module,对于您的特定情况,您可以使用 dictreader 并解析标题以检查您正在寻找的列

    import csv
    import os
    
    directory = os.path.abspath(os.path.dirname(__file__)) # change this to your directory
    csv_list = [os.path.join(directory, c) for c in os.listdir(directory) if os.path.splitext(c) == 'csv']
    
    def parse_csv_file():
      " open CSV and check the headers "
      for c in csv_list:
        with open(c, mode='r') as open_csv:
         reader = csv.DictReader(open_csv)
         if 'epoch' in reader.fieldnames:
           # do whatever you want here
         else:
           # do whatever else
    

    然后您可以从 DictReader 的 CSV 标头中提取它并做任何您想做的事情

    你的 python 看起来也无效

    【讨论】:

      猜你喜欢
      • 2020-12-02
      • 2019-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      • 2020-03-13
      • 2014-07-23
      • 1970-01-01
      相关资源
      最近更新 更多