使用for循环时,Python脚本不会搜索正确的目录

2024-10-01 00:27:14 发布

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

我使用for循环在许多目录中搜索,并拉出netcdf文件,然后进行绘图。我当前用于查看目录的python脚本如下所示:

length = ['05','10','25','50'] 
time = ['06','12','24','48'] 
depth = ['100','200','500'] 
for length in length:
    for time in time:
        for depth in depth:

            nfdir = '/u/gens/nieto/stoch'
            ncfn=nfdir + '/stoch_' + length + 'km_' + time + 'h_' + depth + 'm_010T_002S_00U/ncom3d.nc'

我得到的错误是:

IOError: [Errno 2] No such file or directory: '/u/gens/nieto/stoch/stoch_05km_12h_5m_010T_002S_00U/ncom3d.nc'

它将我的列表中的500个缩短为5个,没有目录,因为这不是我正在测试的。不知道如何修复这个问题,因为它看起来像是一个明显的错误

编辑:我只是想指出我对Python比较陌生,所以请原谅我在代码方面的不好品味


Tags: 文件in目录fortime错误netcdflength
2条回答

for depth in depthfor length in length..等的for循环导致了故障

改变它们可以解决问题

lengths = ['05','10','25','50']   # <  renamed length to lengths
times = ['06','12','24','48']  # <  renamed time to times
depths = ['100','200','500']  # <  renamed depth to depths
for length in lengths:  # <  use lengths
    for time in times:  # <  use times
        for depth in depths:  # <  use depths

            nfdir = '/u/gens/nieto/stoch'
            ncfn=nfdir + '/stoch_' + length + 'km_' + time + 'h_' + depth + 'm_010T_002S_00U/ncom3d.nc'

为循环变量重用变量名是一个坏主意,因为它会在循环退出后继续存在。考虑下面的例子:

outer_values = ['ab', 'cd', 'ef']
inner_values = ['12', '34', '56']

for outer_values in outer_values:
    print('outer: ' + repr(outer_values))
    for inner_values in inner_values:
        print('inner: ' + repr(inner_values))

# outer: 'ab'
# inner: '12'
# inner: '34'
# inner: '56'
# outer: 'cd'
# inner: '5'
# inner: '6'
# outer: 'ef'
# inner: '6'

在第二次传递时,名称inner_values仍然绑定到在原始inner_values中迭代的最后一个字符串,即'56'。在第三次通过时,inner_valuesin然后仅绑定到'6'

相关问题 更多 >