如何使用 python 刷新目录(Windows 10)
Posted
技术标签:
【中文标题】如何使用 python 刷新目录(Windows 10)【英文标题】:How to refresh a directory (Windows 10) using python 【发布时间】:2021-10-09 12:38:00 【问题描述】:我只需要刷新一个文件夹。 一个假设的理想示例是:
from aModule import refreshdir # fake
refreshdir("C:\path\to\directory")
上下文: 我正在使用 Autodesk Desktop Connector,这是一种将云上的数据与本地文件夹同步的服务。为避免消耗资源,此工具仅在用户打开文件或刷新目录时(手动)检查新更新。但是,为了自动化一些操作,我需要用 Python 刷新目录。此工具没有 API。
提前致谢! =)
编辑: 可以在云中添加新文件。这就是为什么刷新文件夹很重要。例子: 刷新前: enter image description here 刷新后: enter image description here os.listdir 在刷新之前无法捕获那些突出显示的文件。
【问题讨论】:
除了答案之外,这里列出了所有可能性:***.com/questions/3207219/… 【参考方案1】:刷新目录不是操作系统操作,而是文件系统浏览器/资源管理器的功能。刷新本质上只是重新读取目录内容。
Adobe 工具很可能会挂接到执行此目录内容枚举的文件系统函数。如果是这种情况,那么任务应该很简单
import os
os.listdir("C:/path/to/directory")
请记住,标准字符串文字中的反斜杠 (\
) 会启动转义序列,即,如果您想在此处放置实际的反斜杠,则必须编写 "\\"
。但是 Windows 也很乐意使用正斜杠作为目录分隔符,所以你可以使用它:-)
【讨论】:
感谢 datenwolf 的回答。这很有帮助。您的代码确实会刷新您上次进入该文件夹时可见的内容。但是,如果添加了新文件,则不会列出这些文件 =S @JuanGonzalez 好吧,如果不对 Adobe 代码进行一些逆向工程,就不可能知道它到底挂钩了哪些方法。我有点惊讶的是,Adobe 工具不会简单地建立文件系统更改通知(如docs.microsoft.com/en-us/windows/win32/fileio/… 中所述),这会使您的任务变得不必要……【参考方案2】:为了解决这个问题,我使用 pywinauto 库在 Python 中创建了一个脚本来执行手动任务,该任务单击文件,然后单击同步选项。 在这种情况下,您需要知道要同步的文件的名称。代码是为 AutoCAD Plant 3D 项目制作的,您需要更改文件的路径。
from pywinauto import Application
raiz = "C:\\Users\\YOUR_USERNAME\\ACCDocs\\ORGANIZATION_NAME\\PROJECT_NAME\\Project Files\\PLANT3D_PROJ_NAME\\Plant 3D Models"
Application().start('explorer.exe ' + raiz, timeout=10)
explorer = Application(backend='uia').connect(path='explorer.exe', title="Plant 3D Models")
#Plant3DModels is a variable automatically created with the title of the windows opened
explorer.Plant3DModels.set_focus()
# 'Infra-Geral.dwg' is the name of the file that I will Sync
file = explorer.Plant3DModels.ItemsView.get_item('Infra-Geral.dwg')
file.right_click_input()
explorer.ContextMenu.Sync.invoke()
【讨论】:
如果您有新问题,请点击 按钮提出问题。如果有助于提供上下文,请包含指向此问题的链接。 - From Review 我只向 Juan Gonzalez 推荐了一个我在案例中使用的 python 代码。 @HugoMata 你的代码 sn-p 真的对你有用吗?这还不清楚。如果有效,请相应地更新您的答案。 是的,它奏效了。我相应地编辑了答案。以上是关于如何使用 python 刷新目录(Windows 10)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 中的 Linux 和 Windows 中使用“/”(目录分隔符)?