【发布时间】:2021-12-28 22:15:39
【问题描述】:
我正在尝试从网络 PC 上的用户文件夹中删除所有 Outlook .ost 和 .nst 文件,并试图让它将删除的文件写入 CSV 文件。
我能够让它找到目录中的所有文件并将其写入 CSV 文件,但是当我尝试使用 os.remove 删除文件时,它似乎没有运行,我对其进行了哈希处理暂时。
我在 try 和 except 中添加了跳过正在使用的文件。
import os
import sys
sys.stdout = open("output_file.csv", "w")
try:
for rootDir, subdir, files in os.walk("//network_pc_name/c$/Users"):
for filenames in files:
if filenames.endswith((".nst",".ost")):
foundfiles = os.path.join(rootDir, filenames)
#os.remove(os.path.join(rootDir, filenames))
print(foundfiles)
except:
pass
sys.stdout.close()
我按照建议对脚本进行了一些更改,它似乎运行得更快了,但是,我似乎无法弄清楚如何忽略正在使用的文件。
我将文件扩展名切换为 .xlsx 和 .txt 文件,以模拟打开的 .xlsx 文件接收权限错误,并查看脚本是否会继续运行并删除 .txt 文件。
我收到以下错误: PermissionError: [WinError 32] 该进程无法访问该文件,因为它正被另一个进程使用:'//DESKTOP-HRLS19N/c$/globtest\Book1.xlsx
import glob
import os
files = [i for i in glob.glob("//DESKTOP-HRLS19N/c$/globtest/**", recursive = True) if i.endswith((".xlsx",".txt"))]
[os.remove(f) for f in files]
with open("output_file.csv", "w") as f:
f.writelines("\n".join(files))
【问题讨论】:
-
您说“它似乎没有运行” - 您是否收到错误消息、脚本是否挂起、甚至拒绝启动?请分享任何信息或行为。