我想浏览一个文件夹并删除除了其中一些文件之外的所有文件。以下文件提供了要删除的相应文件名:remfile。但是最后一行不会删除它,它会在remfile(s)地址中添加额外的反斜杠。
如何重写代码以将C:/tmp
定义为root?
import os
root='C:/mmp'
for root,dirs,files in os.walk(root):
for dirname in dirs:
for filename in files:
if filename=='keepfile': continue
remfile=os.path.join(root,dirname,filename)
os.remove(remfile)
答案 0 :(得分:0)
您应该使用原始字符串和反斜杠,例如root=r'C:\Test'
或双反斜杠root='C:\\Test'
。
现在试试这个:
import os
root=r'C:\Test'
for root, dirs,files in os.walk(root):
for filename in files:
if filename=='keepfile': continue
remfile=os.path.join(root,filename)
print('Removing ' + remfile)
os.remove(remfile)
对于我的文件夹层次结构,我得到了:
Removing C:\Test\root_remove1.txt
Removing C:\Test\root_remove2.txt
Removing C:\Test\Folder 1\Folder1_remove1.txt
Removing C:\Test\Folder 1\Folder1_remove2.txt
Removing C:\Test\Folder 2\Folder2_remove1.txt
Removing C:\Test\Folder 2\Folder2_remove2.txt
尝试在代码中添加print
语句,以验证循环内发生的情况。这有时非常有用。