使用python处理来自多个目录的同名数据

2024-09-28 21:51:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一种方法,使我的python脚本处理同名但位于多个目录中的数据。具体来说,我正在寻找在不同的时间步的数据图像。我有一个代码,可以解析数据,一次创建一个图像,但我宁愿让它遍历所有的目录,为我做这一切,而不是手动做。你知道吗

目录/文件的格式如下:

主目录:

  • 文件名:2虚拟化.py你知道吗

目录1:td.0000000

  • 文件名:sqm-wf-k001-st0001.dx
  • 文件名:sqm-wf-k001-st0001_gs.dx公司你知道吗

目录2:td.0000400

  • 文件名:sqm-wf-k001-st0001.dx
  • 文件名:sqm-wf-k001-st0001_gs.dx公司你知道吗

目录3:td.0000800

  • 文件名:sqm-wf-k001-st0001.dx
  • 文件名:sqm-wf-k001-st0001_gs.dx公司你知道吗

是的。 . . 你知道吗

最终目录:td.016400

  • 文件名:sqm-wf-k001-st0001.dx
  • 文件名:sqm-wf-k001-st0001_gs.dx公司你知道吗

我编写的手动执行脚本是:

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的文件中。你知道吗

有没有一种方法可以循环所有这些目录并输出图像?你知道吗

任何见解都将不胜感激。你知道吗

谢谢你!你知道吗


Tags: 图像目录gsdata文件名np公司plt
1条回答
网友
1楼 · 发布于 2024-09-28 21:51:20

你必须遍历你的目录树,找到你想要处理的文件。你知道吗

在您的例子中,我会将您的实际代码包装在一个函数中,然后定义另一个函数来查找文件并将它们传递给您的处理函数。你知道吗

您可以使用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) 

相关问题 更多 >