我想删除文件如下:
path = "username/hw/01/"
file_list = ["main.cc", "makefile"]
files = os.listdir(path)
del_files = list(set(files) - set(file_list))
for del_file in del_files:
try:
os.remove(path + del_file)
except FileNotFoundError as e:
print("\t" + e.strerror)
except OSError as e:
print("\t" + e.strerror)
这是行不通的。如果我尝试跑步
....
try:
os.remove(path + del_file)
os.remove(path + del_file)
except ...
异常触发。但是,如果使用 ls 或 nautilus 进行检查,例如,文件仍然存在。
有效的是
files = os.listdir(path)
del_files = list(set(files) - set(file_list))
while (del_files):
for del_file in del_files:
try:
os.remove(path + del_file)
time.sleep(0.5)
print("\t\tRemoving " + path + del_file)
except FileNotFoundError as e:
print("\t" + e.strerror)
except OSError as e:
print("\t" + e.strerror)
files = os.listdir(path)
del_files = list(set(files) - set(file_list))
这是难以置信的丑陋。当包含打印语句时,它将多次运行以获取所有请求的文件。我错过了什么?
如果重要的话,
$ python3 --version
Python 3.4.3