我已经搜索了许多关于基于某些参数(例如所有 txt 文件)删除多个文件的答案。不幸的是,我还没有看到任何将较长的文件列表保存到 .txt(或 .csv)文件并希望使用该列表从工作目录中删除文件的内容。
我将当前的工作目录设置为 .txt 文件所在的位置(带有要删除的文件列表的文本文件,每行一个)以及 ~4000 .xlsx 文件。在 xlsx 文件中,我想删除大约 3000 个(在 .txt 文件中列出)。
这是我到目前为止所做的:
import os
path = "c:\\Users\\SFMe\\Desktop\\DeleteFolder"
os.chdir(path)
list = open('DeleteFiles.txt')
for f in list:
os.remove(f)
Run Code Online (Sandbox Code Playgroud)
这给了我错误:
OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: 'Test1.xlsx\n'
Run Code Online (Sandbox Code Playgroud)
我觉得我错过了一些简单的东西。任何帮助将不胜感激!
谢谢
'\n'从文本文件中读取的每一行剥离结尾;path文件名来制作绝对路径;list);with open('DeleteFiles.txt') as flist.编辑:实际上,在查看您的代码时,由于os.chdir(path),第二点可能没有必要。
import os
path = "c:\\Users\\SFMe\\Desktop\\DeleteFolder"
os.chdir(path)
flist = open('DeleteFiles.txt')
for f in flist:
fname = f.rstrip() # or depending on situation: f.rstrip('\n')
# or, if you get rid of os.chdir(path) above,
# fname = os.path.join(path, f.rstrip())
if os.path.isfile(fname): # this makes the code more robust
os.remove(fname)
# also, don't forget to close the text file:
flist.close()
Run Code Online (Sandbox Code Playgroud)