2017-10-13 42 views
0

我正在使用for循环在许多目录中搜索并拔出netcdf文件,然后绘制。我通过目录寻找当前的Python脚本是这样的:使用for循环时,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其中有没有目录,因为ISN我正在测试的是什么?不知道如何解决这个给定的看起来像这样一个公然的错误。

编辑:只是想说明我对Python比较新,所以原谅代码中的不好味道。

+0

嗯,深度深度似乎是个坏主意吗? –

+0

您不应该为for循环中的值和迭代使用相同的名称。即使它是不好的做法 – GWW

+0

@JaredGoguen,这不是导致问题 –

回答

2

for depth in depth,for length in length..etc的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' 
+0

这工作。谢谢! –

+0

你可以标记这是答案,并关闭该问题,请:) – Arunmozhi

1

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

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_values然后仅限于'6'