我正在尝试使用python创建一个类似备份程序的谷歌驱动器,备份到一个Linux盒子,它将进一步备份到一个非现场的地方tbd。在这样做时,我遇到了一些有趣的编码和计算机挑战。
我现在正在处理的那个与#34;锁定"文件。那我的意思是什么?在Windows 7中,如果你创建.txt文件,你可以在记事本(任何程序)中打开它,同时你可以在python程序中打开它。如果您在.txt文件中进行更改并保存更改,但在关闭它之前,您仍然可以打开并查看pythn中的更改。现在将文件更改为.docx文件并使用word 2007打开它。虽然在word中打开,但在用户关闭它之前无法使用python访问它。
现在,如果您查看谷歌驱动器,桌面安装不是仅限Web,您可以打开.docx文件并进行更改。保存后,但在关闭之前,谷歌驱动器已经同步了该文件。
Google驱动器必须具有某种低级访问权限,而不是简单的python file.open()命令。
所以这就是问题所在。有没有人知道在python中访问文件的方法,以免让我不得不等待用户关闭文件。
编辑1: 让我进一步解释一下。一旦我创建了一个包含所有文件和目录的sqlite数据库,我将使用win32file.ReadDirectoryChangesW()函数来监视更改。我的问题源于这样的事实:当设置第一次安装/运行的应用程序时,它必须编目所有文件和在Windows Office中打开的文件被锁定且无法编目。有没有解决的办法?
答案 0 :(得分:0)
许多备份工具都使用快照。然后,他们将直接从快照复制锁定的文件,而不是直接从文件系统处理它。如果您使用的是Windows,则应检查Windows VSS,有关详细信息,请参阅Microsoft documentation。否则,如果您所在的文件系统支持快照,也请检查其文档。
您可以使用subprocess
Python模块运行第三方工具,为您拍摄快照。
如果您想自己动手,可能需要Win32 API中的模块,例如win32com
模块。
在Github上还有一个似乎可以完成这项工作的项目:pyshadowcopy
根据文件系统功能,您可能会找到允许您拍摄快照的python模块或工具。