查看文件夹内部
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 上检查并 运行 上面的代码,它工作正常。
祝你好运:)
我试图让这个脚本在我正在查看的目录中循环,一旦它通过了验证。
代码检查文件夹名称(以“-”分隔)是否由数字组成,以及这些数字的总长度是否为 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 上检查并 运行 上面的代码,它工作正常。
祝你好运:)