遍历几个目录中的文件以提取数据

时间:2018-11-05 05:18:32

标签: python loops

我有一系列嵌套的文件,如所附的图像所示。对于每个“内部”文件夹(例如001717528文件夹),我想从每个FITS文件中提取一行数据,并创建一个包含所有行的CSV文件,并在“内部”名称之后命名该CSV文件。 ”文件夹(例如001717528.csv中包含来自18个fits文件的数据)。数据提取部分很简单,但是我无法对迭代进行编码。

我真的不知道如何遍历外部文件夹(例如0017)和内部文件夹,并根据需要命名csv文件。

Screen-cap of my files

我的代码如下:

for subdir, dirs, files in os.walk('../kepler'):
    for file in files:
        filepath = subdir + os.sep + file
        if filepath.endswith(".fits"):
            extract data
        write to csv file

显然,这将迭代kepler文件夹中的所有文件,因此它不起作用。

2 个答案:

答案 0 :(得分:0)

尝试以下代码,它应该打印所有“ .fits”文件的文件路径:

# !/usr/bin/python

import os
base_dir = './test'

for root, dirs, files in os.walk(base_dir, topdown=False):
  for name in files:
    if name.endswith(".fits"):
      file_path = os.path.join(root, name) #path of files
      print(file_path)
    # do your treatment on file_path

您所要做的就是添加您的特定治疗方法。

答案 1 :(得分:0)

如果需要跟踪进入目录结构的距离,可以计算文件路径定界符(os.sep)。您的情况是/,因为您使用的是Mac。

for path, dirs, _ in os.walk("../kepler"):      
  if path.count(os.sep) == 2:
    # path should be ../kepler/0017  
    for dir in dirs:  
      filename = dir + ".csv"
      data_files = os.listdir(path + os.sep + dir)
      for file in data_files:
        if file.endswith(".fits"):
          # Extract data
          # Write to CSV file

据我所知,这符合您的要求,但请让我知道是否错过了一些事情。