当前位置: 首页 > 面试题库 >

如何使用Python查找Windows通用应用程序数据文件夹?

戎志勇
2023-03-14
问题内容

我希望我的应用程序存储一些数据以供所有用户访问。使用Python,我如何找到数据应该去哪里?


问题答案:

如果您不想为像winpaths这样的第三方模块添加依赖项,我建议您使用Windows中已经可用的环境变量:

  • Windows中有哪些可用的环境变量?

具体来说,您可能想要ALLUSERSPROFILE获取公用用户配置文件文件夹的位置,该文​​件夹是“应用程序数据”目录所在的位置。

例如:

C:\> python -c "import os; print os.environ['ALLUSERSPROFILE']"
C:\Documents and Settings\All Users

编辑
:查看winpaths模块,它使用的是ctypes,因此,如果您只想使用代码的相关部分而不安装winpath,则可以使用它(显然,为简便起见,省略了一些错误检查)。

import ctypes
from ctypes import wintypes, windll

CSIDL_COMMON_APPDATA = 35

_SHGetFolderPath = windll.shell32.SHGetFolderPathW
_SHGetFolderPath.argtypes = [wintypes.HWND,
                            ctypes.c_int,
                            wintypes.HANDLE,
                            wintypes.DWORD, wintypes.LPCWSTR]


path_buf = wintypes.create_unicode_buffer(wintypes.MAX_PATH)
result = _SHGetFolderPath(0, CSIDL_COMMON_APPDATA, 0, 0, path_buf)
print path_buf.value

示例运行:

C:\> python get_common_appdata.py
C:\Documents and Settings\All Users\Application Data


 类似资料:
  • 我有一个应用程序可以将文本文件写入内部存储。我想仔细看看我的电脑。 我知道他们存在,因为我可以在亚行的外壳上找到。我需要将/data/data翻译成文件资源管理器上可见的路径,这样我就可以轻松下载它们。谢谢!

  • 问题内容: 我想打开一个文件,该文件由另一个应用程序定期写入。此应用程序无法修改。因此,我只想在我知道该文件未被其他应用程序写入时才打开该文件。 有python方式可以做到这一点吗?否则,如何在Unix和Windows中实现呢? 编辑 :我将尝试澄清。 有没有办法检查当前文件是否已被另一个应用程序打开? 我想从这个问题开始。这些其他应用程序现在是否读写无关紧要。 我意识到这可能与操作系统有关,所以

  • 问题内容: 这就是我所拥有的: 但我想搜索src的子文件夹。这样的事情会起作用: 但这显然是有限且笨拙的。 问题答案: Python 3.5+ 由于你使用的是新的python,因此应pathlib.Path.rglob在pathlib模块中使用。 如果你不想使用pathlib,只需使用,但不要忘记传递recursive关键字参数。 对于匹配文件以点(。)开头的情况;例如当前目录中的文件或基于Uni

  • 我尝试使用Find element by id,但它没有插入所需的数据。然后我使用了Find element by xpath

  • 问题内容: 如何寻找远程(HTTP)文件上的特定位置,以便只能下载该部分? 可以说远程文件上的字节是:1234567890 我想寻找4并从那里下载3个字节,所以我会:456 而且,如何检查远程文件是否存在?我尝试了os.path.isfile(),但是当我传递远程文件URL时,它返回False。 问题答案: 如果要通过HTTP下载远程文件,则需要设置标题。 在此示例中检查如何完成。看起来像这样:

  • 问题内容: 我的应用程序将PDF打印到一个临时文件。如何使用Python中的默认应用程序打开该文件? 我需要一个解决方案 window Linux(如果没有更通用的功能,则使用带有Xfce的Ubuntu)。 问题答案: os.startfile暂时仅适用于Windows,但是xdg- open 将在运行X的任何UNIX客户端上可用。