我正在尝试编写一个嵌套的while循环,它将创建n个文件夹和n个子目录。我当前代码的问题是创建的第一个文件夹不包含子目录。只有第二个目录包含子目录。我的目标是编写一个使用地下水建模软件运行参数扫描的程序,我需要这些目录来保存结果。
import subprocess, os
i = 1
j = 1
while i <= 2:
path = r'C:/Users/TEvans/Desktop/Testing/slope%d' % i
if not os.path.exists(path): os.makedirs(path)
os.chdir(path)
i = i+1
while j <= 3:
path1 = r'C:/Users/TEvans/Desktop/Testing/slope%d/r%d' % (i, j)
if not os.path.exists(path1): os.makedirs(path1)
j = j+1 发布于 2013-02-26 06:06:03
您的一些代码是冗余的,并且(正如其他人提到的) while会混淆您的数学运算。
下面是一个更简单,几乎等同的版本:
import os
for i in (1,2):
for j in (1,2,3):
path1 = r'C:/Users/TEvans/Desktop/Testing/slope%d/r%d' % (i, j)
if not os.path.exists(path1): os.makedirs(path1)os.makedirs()的调用,因为这些目录将由内部循环的os.makedirs()创建。i和j的数学运算,以反映我认为您想要的结果。os.chdir()的调用,因为您使用的是绝对路径,而调用看起来不是绝对路径发布于 2013-02-26 05:45:00
当第一次调用os.makedirs(path1)时,i已经递增。如果你使用foor循环,代码不仅会更干净,而且更正确。
发布于 2013-02-26 05:48:15
您的问题是,在进入内部while循环之前,i已经递增了,您可以通过移动i = i+1行来解决这个问题,这样它就是while i <= 2循环中完成的最后一件事。
然而,更好的解决方案是只使用for循环:
for i in range(1, 3):
path = r'C:/Users/TEvans/Desktop/Testing/slope%d' % i
if not os.path.exists(path): os.makedirs(path)
os.chdir(path)
for j in range(1, 4):
path1 = r'C:/Users/TEvans/Desktop/Testing/slope%d/r%d' % (i, j)
if not os.path.exists(path1): os.makedirs(path1)https://stackoverflow.com/questions/15077024
复制相似问题