编程语言
首页 > 编程语言> > 使用Python,如何关闭另一个用户通过网络使用的文件?

使用Python,如何关闭另一个用户通过网络使用的文件?

作者:互联网

我有一个程序,可以创建一堆电影文件.我作为cron作业运行,每次运行时,前一次迭代中的电影都会移到“上一个”文件夹中,以便始终可以查看以前的版本.

这些影片文件由不同的用户通过网络访问,这就是我遇到的问题.

当脚本运行并尝试移动文件时,它会引发资源繁忙错误,因为这些文件已由多个用户打开.在我尝试移动它们之前,Python中有没有办法强制关闭这些文件?

进一步澄清:

当他提到这是服务器级的问题时,JMax是正确的.我可以通过管理工具>访问Windows服务器.计算机管理>共享文件夹>打开文件并手动关闭那里的文件,但是我想知道是否有Python等效文件可以达到相同的结果.

像这样的东西:

try:

    shutil.move(src, dst)

except OSError:

  # Close src file on all machines that are currently accessing it and try again.  

解决方法:

这个问题与Python无关,与您正在使用的特定操作系统和文件系统无关.您能否提供这些详细信息?

至少在Windows中,您可以使用Sysinternals Handle强制关闭文件的特定句柄.尤其是当该文件由另一个用户通过网络打开时,此操作非常不稳定,并且可能随后使网络连接无效.您正在寻找“ -c”命令行参数,该文档的内容为:

Closes the specified handle (interpreted as a hexadecimal number). You
must specify the process by its PID.

WARNING: Closing handles can cause application or system instability.

而且,如果您要强制关闭在Linux中通过Samba挂载的文件,从经验上来讲,这是徒劳无益的.但是,其他人却尝试了不同的成功.参见Force a Samba process to close a file.

标签:file-io,python
来源: https://codeday.me/bug/20191207/2087295.html