Python 您如何获得到“的确切路径?”;我的文件;? 在C++中,将完全路径名获取到shell在Windows XP和Windows 7和Vista中的“文档”中称为“我的文档”的文件夹并不太困难;看
在Python中有没有一种简单的方法可以做到这一点?您可以使用ctypes模块获取“我的文档”目录:Python 您如何获得到“的确切路径?”;我的文件;? 在C++中,将完全路径名获取到shell在Windows XP和Windows 7和Vista中的“文档”中称为“我的文档”的文件夹并不太困难;看,python,windows,Python,Windows,在Python中有没有一种简单的方法可以做到这一点?您可以使用ctypes模块获取“我的文档”目录: import ctypes from ctypes.wintypes import MAX_PATH dll = ctypes.windll.shell32 buf = ctypes.create_unicode_buffer(MAX_PATH + 1) if dll.SHGetSpecialFolderPathW(None, buf, 0x0005, False): print(bu
import ctypes
from ctypes.wintypes import MAX_PATH
dll = ctypes.windll.shell32
buf = ctypes.create_unicode_buffer(MAX_PATH + 1)
if dll.SHGetSpecialFolderPathW(None, buf, 0x0005, False):
print(buf.value)
else:
print("Failure!")
来源:我对windows不太了解,但是
os.environ['HOMEPATH']
通常不是在windows系统上定义的吗?@Joe,在我的系统上os.environ['HOMEPATH']
返回'\\\'
@Mark-啊,我的道歉。。。它似乎在我可以访问的两台XP机器上工作,我隐约记得它是标准的。。。我想不是+1表示不希望使用“我的文档”文件夹的硬编码路径。令人恼火的是,Windows没有包含此文件夹的环境变量。尝试使用HOMEPATH或USERPROFILE会烧掉您,因为由于本地化或系统管理员已将其移动,上述目录不保证存在于其中。我会给出+1,但使用ANSI版本可能会限制在使用默认代码页以外字符的目录。@Adrian McCarthy,谢谢,我没注意到。我已经更改了答案,改为使用unicode版本。我假设神奇常量0x0005是CSIDL_PERSONAL。神奇常数300是在某处记录的,还是只是添加了一些任意填充的MAX_PATH?FWIW,SHGetSpecialFolderPathW()
调用如果成功将返回True,否则返回False,以便检查以确定是否在buf.value
中放置了任何有用的内容。仅供参考:在回答类似问题时,我发现,只需从ctypes
模块导入wintypes
,就可以避免对MAX_路径进行硬编码:从ctypes导入wintypes。现在,您不必将MAX_路径硬编码为260
,只需像这样访问它:wintypes.MAX_路径
。