首先让我说我对python还比较陌生。
好的,我正在运行代码,对数据文件执行物理计算/绘制图形等,我需要做的是循环遍历多个文件和子文件。但问题是每个文件中有不同数量的子文件(例如,文件0有711个子文件,文件1有660个奇数)。当我在索引x处没有子文件的文件中运行它时,它显然不喜欢这样,所以我想知道是否有方法让它运行(迭代?)在每个文件中自动达到最终限制?
我得到的是一个嵌套循环,比如:
for i in range(0,120):
for j in range(0,715):
stuff
请提前为我的帮助干杯,如果我的解释不正确,请道歉!
编辑: 更多的代码。所以我实际上是在计算/绘制气体和暗物质粒子的角动量。这些是在光环(j)中,&;有许多文件(i)包含许多和许多这些光环。
import getfiby
import numpy as np
import pylab as pl
angmom=getfiby.ReadFIBY("B")
for i in range(0,120):
for j in range(0,715):
pos_DM = angmom.getParticleField(49,i,j,"DM","Coordinates")
vel_DM = angmom.getParticleField(49,i,j,"DM","Velocity")
mass_DM = angmom.getParticleField(49,i,j,"DM","Mass")
more stuff
getfiby是我得到的一个代码,它从文件中检索所有数据(我看不到)。这其实不是一个大问题,因为我仍然可以让它运行计算并绘制图表,即使我对j的范围设置的上限超过了某个特定文件中的光晕数(我得到:光晕索引超出界限)。再见)但我只是想知道是否有更好,更整洁的方式让它运行。
我可能误解了您的结构/意图,但听起来您想对某个文件夹结构中的每个文件执行一些计算,其中的文件夹包含不同数量的数据文件。在这种情况下,我将使用^{} 函数,而不是尝试手动索引每个数据文件。
当然,这可以通过几种方式更容易地查看(就我个人而言,我有自己的
listdir
包装器,它返回完整路径,而不仅仅是基名),但这将是我的基本想法。如果您还需要每个文件的索引,您可能可以使用^{} 和
sorted
(例如for i, file in enumerate(sorted(os.listdir(...)))
)的组合来获得它,但具体情况显然取决于您的文件名和目录结构。你可能想要这样的东西:
当您构建要处理的文件和子文件列表时,可以将列表放在名为filelist的变量中,将子文件列表放在名为subfile list的变量中,然后可以按如下方式运行循环
如果你需要使用范围,那么
相关问题 更多 >
编程相关推荐