如何在python中获取完整的windows路径

如何在python中获取完整的windows路径,python,windows,path,Python,Windows,Path,在python中如何将缩短的路径转换为完整路径?例如,以这个完整路径为例 C:\Test\PathToMyDirectoryWithLongName\Test.txt 变成了 C:\Test\PATHTO~\Test.txt 如何将其转换回?使用: 以及: 注意:您需要安装才能使用上述功能。它是如何被“转换”的?它通过了一个黑盒:-)不知道它是如何被转换的。不要紧。好吧,我唯一的想法是,如果这是在另一个系统上缩短的,而您是从存储的数据中读取的,那么您可能很难获得长路径,因为缩短的方式取决于缩短的

在python中如何将缩短的路径转换为完整路径?例如,以这个完整路径为例

C:\Test\PathToMyDirectoryWithLongName\Test.txt

变成了

C:\Test\PATHTO~\Test.txt

如何将其转换回?

使用:

以及:


注意:您需要安装才能使用上述功能。

它是如何被“转换”的?它通过了一个黑盒:-)不知道它是如何被转换的。不要紧。好吧,我唯一的想法是,如果这是在另一个系统上缩短的,而您是从存储的数据中读取的,那么您可能很难获得长路径,因为缩短的方式取决于缩短的系统。我理解。不,这一切都发生在同一个系统上。
GetLongPathName
看起来不错,但如果我尝试在未缩短的路径上使用它,比如
win32api.GetLongPathName(r'C:\tmp\test.txt')
实际上我不知道我的路径是否缩短了。有什么简单的解决方法吗?还是我必须捕获异常?@arminb,检查路径是否包含
~
path=win32api.GetLongPathName(path)如果路径else path中的“~”正确,则该路径看起来必须存在,否则我会得到错误。如果它存在并且没有缩短,那么它也可以工作。@arminb,如果它可以使用可逆算法将255个字符减少到8.3个短名称,那将是一个奇迹。相反,
GetLongPathName
必须读取文件系统中存储的现有文件的长文件名。它在路径元素上循环,调用并连接结果结构中的
cFileName
元素。@falsetru,来自:[D]o如果路径不包含波浪号(~)字符,则不要假定可以跳过调用
GetLongPathName
>>> win32api.GetLongPathName(r'c:\progra~1')
'c:\\Program Files'
>>> win32api.GetShortPathName(r'c:\Program Files')
'c:\\PROGRA~1'