我的目录中有一个文件夹列表,在每个文件夹中我试图删除所有以字母开头的文件' P'。
如何让我的第二个for循环遍历每个文件夹中的所有文件?目前它只是迭代每个文件夹的名称而不是内部的文件。
folder_list_path = 'C:\Users\jack\Desktop\cleanUp'
for folder in os.listdir(folder_list_path):
print folder
for filename in folder:
os.chdir(folder)
if filename.startswith("P"):
os.unlink(filename)
print 'Removing file that starts with P...'
答案 0 :(得分:0)
未经测试,并使用glob
模块。
import os, glob
folder_list_path = 'C:\Users\jack\Desktop\cleanUp'
for folder in os.listdir(folder_list_path):
if os.path.isdir(folder):
print folder
os.chdir(folder)
for filename in glob.glob('P*'):
print('Removing file that starts with P: %s' % filename)
# os.unlink(filename) # Uncomment this when you're happy with what is printed
您还可以找到包含os.walk
- for example, this related的子目录 - 而不是遍历folder_list_path
中的每个项目并在其上调用os.path.isdir
。
答案 1 :(得分:0)
使用glob
查找并os
删除
import glob, os
for f in glob.glob("*.bak"):
os.remove(f)
答案 2 :(得分:0)
在您的程序文件夹中是一个相对路径。试试你的程序的这个修改版本:
import os
folder_list_path = 'C:\Users\jack\Desktop\cleanUp'
for folder in os.listdir(folder_list_path):
print folder
subdir=os.path.join(folder_list_path,folder)
for file in os.listdir(subdir):
path=os.path.join(subdir,file)
if os.path.isfile(path) and file.startswith("P"):
print 'Removing file that starts with P...'
os.unlink(path)
答案 3 :(得分:0)
使用os.walk
遍历目录。
import os
starting_directory = u'.'
for root, dirs, files in os.walk(starting_directory):
path = root.split('/')
for file in files:
if file.startswith('p'):
os.remove(os.path.join(os.path.basename(root), file))