我正在尝试用 Python 创建一个脚本来备份一些文件。但是,这些文件可以随时重命名或删除。我不希望我的脚本通过锁定文件来阻止这种情况;在备份过程中,该文件应该仍然可以随时删除。
我怎样才能在Python中做到这一点?而且,会发生什么?如果无法读取流,我的对象是否会变为 null?
谢谢你!我对 Python 有点陌生。
正如@kindall 所提到的,这是一个特定于Windows 的问题。 Unix 操作系统允许删除。
要在 Windows 中执行此操作,我需要使用win32file.CreateFile() http://timgolden.me.uk/pywin32-docs/win32file__CreateFile_meth.html使用 Windows 特定的dwSharingMode
标志(在 Python 中pywin32 https://pypi.org/project/pywin32/,它只是被称为shareMode
).
粗略示例:
import msvcrt
import os
import win32file
py_handle = win32file.CreateFile(
'filename.txt',
win32file.GENERIC_READ,
win32file.FILE_SHARE_DELETE
| win32file.FILE_SHARE_READ
| win32file.FILE_SHARE_WRITE,
None,
win32file.OPEN_EXISTING,
win32file.FILE_ATTRIBUTE_NORMAL,
None
)
try:
with os.fdopen(
msvcrt.open_osfhandle(py_handle.handle, os.O_RDONLY)
) as file_descriptor:
... # read from `file_descriptor`
finally:
py_handle.Close()
Note:如果您需要保留win32 文件超出其生命周期而开放文件句柄对象返回,你应该调用PyHandle.detach() http://timgolden.me.uk/pywin32-docs/PyHANDLE__Detach_meth.html在那把柄上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)