如何解决Windows-由另一个进程打开的文件,仍然可以在Python中重命名
在 Windows 操作系统上,在对文件执行某些操作之前,我需要知道该文件是否已被其他进程使用。经过对所有其他类似问题的认真研究后,我无法找到可行的解决方案。
os.rename(my_file.csv,my_file.csv)
仍然可以使用,即使我使用...记事本打开了文件。
psutil
...花费了太多时间,并且无法正常工作(在nt.path
中找不到我的文件路径:
for proc in psutil.process_iter():
try:
flist = proc.open_files()
if flist:
for nt in flist:
if my_file_path == nt.path:
print("it's here")
except psutil.NoSuchProcess as err:
print(err)
还有其他解决方案吗?
更新1
我必须对此文件执行2个操作:1.检查文件名是否对应于模式; 2.通过SFTP复制。
UPDATE 2 +解决方案
由于@Eryk Sun,我发现记事本“将内容读入内存,然后关闭句柄”。用Word打开文件后,os.rename
和psutil
就像(py)符一样工作。
解决方法
如果您使用的程序通过导入来打开文件(例如,Excel会执行该操作),则意味着该程序无需手动操作即可以可读形式转换您的数据然后在实际文件上。如果您从那里保存文件,它会以程序自己的格式保存文件或将文件导出(并转换)回去。
您想对文件进行什么操作?也许您可以简单地复制文件?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。