我有一系列嵌套的文件,如所附的图像所示。对于每个“内部”文件夹(例如001717528文件夹),我想从每个FITS文件中提取一行数据,并创建一个包含所有行的CSV文件,并在“内部”名称之后命名该CSV文件。 ”文件夹(例如001717528.csv中包含来自18个fits文件的数据)。数据提取部分很简单,但是我无法对迭代进行编码。
我真的不知道如何遍历外部文件夹(例如0017)和内部文件夹,并根据需要命名csv文件。
我的代码如下:
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文件夹中的所有文件,因此它不起作用。
答案 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
据我所知,这符合您的要求,但请让我知道是否错过了一些事情。