我正在寻找一种方法来使我的python脚本处理具有相同名称但位于多个目录中的数据。具体来说,我希望在不同的时间范围内根据数据制作图像。我有一个代码可以解析数据并一次创建一个图像,但是我宁愿让它遍历所有目录并为我完成所有操作,而不是手动进行操作。
目录/文件的格式如下:
主目录:
Dir1:td.0000000
Dir2:td.0000400
Dir3:td.0000800
。 。
Dir_final:td.016400
我编写的手动脚本是:
import numpy as np
import matplotlib.pyplot as plt
//size of the grid for each spatial dimension
sizex = 267
sizey = 267
sizez = 201
//below the data is parsed and made into an array
sqm_data_gs = np.genfromtxt('sqm-wf-k001-st0001_gs.dx',skip_header = 7,skip_footer = 5)
sqm_data = np.genfromtxt('sqm-wf-k001-st0001.dx',skip_header = 7,skip_footer = 5)
sqm_dat_gs = np.array(sqm_data_gs)
sqm_dat = np.array(sqm_data)
sqm_data_array = np.reshape(sqm_dat,(sizex,sizey,sizez))
sqm_data_array_gs = np.reshape(sqm_dat_gs,(sizex,sizey,sizez))
sqm_diff = sqm_data_array - sqm_data_array_gs
plt.imshow(sqm_diff[:,:,sqm_diff.shape[2]//2],interpolation = 'quadric',origin = 'lower',extent=[-20,20,-20,20])
plt.xlim([-3,3])
plt.ylim([-3,3])
//plt.show()
plt.savefig('sqm0001.png')
我想将每个图像保存到名为sqm ****。png的文件中。
有没有办法遍历所有这些目录并像这样输出图像?
任何见识将不胜感激。
谢谢!
答案 0 :(得分:0)
您必须遍历目录树并找到要处理的文件。
在您的情况下,我会将您的实际代码包装在一个函数中,然后定义另一个函数来查找文件并将它们传递给您的处理函数。
您可以使用os.walk轻松浏览目录,因此这是您遇到问题的一个示例:
import os
def find_data_files():
for root, dirs, files in os.walk('/path/to/your/main/dir'):
if len(files) > 0:
# we are inside a dir with files
for file in files:
# get file name and extension
name, ext = os.path.splitext(file)
if ext == '.dx':
if name[-3:] == '_gs':
# get full path for sql_data_gs file
sqm_data_gs = os.path.join(root, file)
else:
# get full path for sql_data file
sqm_data = os.path.join(root, file)
# now call your data processing function using file values
# (supposing you called your function `process_files)
process_files(sqm_data, sqm_data_gs)