For循环未执行

2024-03-28 23:04:10 发布

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

我需要打开名为:“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循环没有执行?有什么帮助吗?你知道吗


Tags: in文件夹fordataifospassdirectory
1条回答
网友
1楼 · 发布于 2024-03-28 23:04:10

这是因为您正在循环内执行os.chdir。你知道吗

os.walk在上一次执行循环时更改的目录中找不到“data”目录,您需要更改rootDir以提供“full/path/to/data”目录,或者尝试在循环中执行os.chdir("..")以返回上一个目录。你知道吗

相关问题 更多 >