我试图使此脚本通过我正在查看的目录进行循环,一旦它通过了验证。
代码检查文件夹名称(由' - '(是否由数字组成,以及这些数字是否总共长5个字符。一旦此检查已经完成了,我希望我的代码通过该文件夹循环。
任何人可以帮我吗?
到目前为止,这是我的代码:
directory = r'\cd3SFTP'
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)
来"看"
代码中唯一的问题是,您将要查看的当前文件夹的文件夹名称丢弃,因为您正在用拆分结果覆盖它:
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
您告诉您要检查文件夹(不是文件(,因此我们需要跳过文件。这是通过在上述代码中使用os.path.isdir
第3行完成的。
每个 subfolder 均被打印,以防万一它的parrent满足了从数字开始的条件,并且长5个字符。
我在Ubuntu 16.04上检查并运行了上述代码,并且效果很好。
祝你好运:(