查看文件夹内部

Looking inside of a folder

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

代码检查文件夹名称(以“-”分隔)是否由数字组成,以及这些数字的总长度是否为 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

如您所知,如果您有文件夹名称,那么您可以直接使用 os.listdir(folder_name) 到 "look inside"

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

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

这是一个代码,它递归地 抓取您的文件夹并打印以数字开头且长度为 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 

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

祝你好运:)