1

一旦通过验证,我试图让这个脚本循环遍历我正在查看的目录。

代码检查文件夹名称(由“-”分隔)是否由数字组成,以及这些数字是否总共有 5 个字符。完成此检查后,我希望我的代码遍历该文件夹。

谁能帮我?

到目前为止,这是我的代码:

directory = r'\\cd3\SFTP'

for folder in os.listdir(directory):
    folder = folder.split(' - ')
    #print fn
    if 'infognana' in folder or 'sunriseimaging' in folder or 'mydatasolutions' in folder:
        continue
    if folder[0].isdigit() and len(folder[0]) == 5:
        print folder
4

2 回答 2

2

如您所知,如果您有文件夹名称,那么您可以使用os.listdir(folder_name)“查看内部”

代码中的唯一问题是,您丢失了正在查看的当前文件夹的文件夹名称,因为您正在使用拆分结果覆盖它:

folder = folder.split(' - ')

如果您保存原始文件夹名称,那么您可以调用 os.listdir 并执行您的操作:

for folder_name in os.listdir(directory):
    folder = folder_name.split(' - ')
    #print fn
    if 'infognana' in folder or 'sunriseimaging' in folder or 'mydatasolutions' in folder:
        continue
    if folder[0].isdigit() and len(folder[0]) == 5:
        #do something on os.listdir(os.path.join(directory,folder_name))
        print folder
于 2018-02-09T10:36:41.207 回答
0

这是一个递归爬取您的文件夹并打印以数字开头且长度为 5 个字符的文件夹名称的代码。

import os  
def check(dir):
for f in [x for x in os.listdir(dir) if os.path.isdir(dir+"/{}".format(x))]:
    if any([i in folder_name for i in \ 
                ['infognana', 'sunriseimaging', 'mydatasolutions']]):
    if f[0].isdigit() and len(f)==5:
        print f                     # print the name of the (sub)folder
        check(os.path.join(dir, f)  # do the same thing for this subfolder 

你告诉你要检查文件夹(不是文件),所以我们需要跳过文件。这是通过os.path.isdir在上面的代码第 3 行中使用来完成的。打印
每个子文件夹以防其父文件夹满足以数字开头且长度为 5 个字符的条件。
我在 ubuntu 16.04 上检查并运行了上面的代码,它工作正常。

祝你好运 :)

于 2018-02-09T11:33:47.580 回答