我需要打开名为''data'的根文件夹,然后去获取该文件夹中的文件夹列表,然后获取每个文件夹的路径并执行一些代码,检查这些文件夹中是否有'docx' '文件。
如果仅执行此操作:
rootDir = 'data'
for dirName, subdirList, fileList in os.walk(rootDir):
if dirName == 'data':
pass
else:
print('Found directory: %s' % dirName)
结果我得到了所有文件夹的列表
Found directory: data/2014 09 Daily Reports
Found directory: data/2014 11 Daily Reports
Found directory: data/2014 03 Daily Reports
Found directory: data/2015 04 Daily Reports
Found directory: data/2015 03 Daily Reports
Found directory: data/2015 08 Daily Reports
Found directory: data/2014 10 Daily Reports
Found directory: data/2015 07 Daily Reports
.....
但如果我包括这个:
rootDir = 'data'
for dirName, subdirList, fileList in os.walk(rootDir):
if dirName == 'data':
pass
else:
dirpath = os.path.abspath(dirName)
for root, dirs, filenames in os.walk(dirpath):
for f in filenames:
os.chdir(dirpath)
fn = f.replace('\xc3\xab','e')
os.rename(f, f.replace('\xc3\xab','e'))
if 'docx' in f:
print 'docx files are found inside this folder'
else:
pass
print('Found directory: %s' % dirName)
如果执行此操作,结果只有:
Found directory: data/2014 09 Daily Reports
为什么for循环没有执行?有什么帮助吗?
答案 0 :(得分:2)
发生了这种情况,因为您在循环中执行os.chdir
。
os.walk
无法找到"数据"在上一次循环执行中更改为目录的目录中,您需要更改rootDir
以提供" full / path / to / data" 目录或尝试在循环内执行os.chdir("..")
以返回上一个目录。