Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 您如何获得到“的确切路径?”;我的文件;? 在C++中,将完全路径名获取到shell在Windows XP和Windows 7和Vista中的“文档”中称为“我的文档”的文件夹并不太困难;看_Python_Windows - Fatal编程技术网

Python 您如何获得到“的确切路径?”;我的文件;? 在C++中,将完全路径名获取到shell在Windows XP和Windows 7和Vista中的“文档”中称为“我的文档”的文件夹并不太困难;看

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

在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(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_路径