[英]Python get windows temp directory full path
这是相对简单的问题,但由于某种原因,我找不到通过 python 获取 windows temp 目录完整路径的方法,或者找到已在堆栈溢出社区中发布的类似请求。
我正在使用 tempfile.gettempdir() 命令,但似乎无法捕获完整路径并返回简短版本:
'C:\\Users\\SVETLO~1\\AppData\\Local\\Temp'
这整体有效,但脚本的一个重要部分稍后没有,它需要完整的临时目录路径,即:
C:\\Users\\SvetlozarDraganov\\AppData\\Local\\Temp\\
有谁知道如何使用python获取windows-temp文件夹的完整绝对路径?
提前致谢。 斯维特
编辑-1:
我正在测试来自 CMD 的 %fA 建议,但由于某种原因,它不起作用。 如果我使用 %sA 属性,它实际上返回短路径版本:
CMD: for %A in ("C:\\Users\\SvetlozarDraganov\\AppData\\Local\\Temp") do @echo %~sA
输出: C:\\Users\\SVETLO~1\\AppData\\Local\\Temp
但是 %fA 属性不返回完整路径:
CMD: for %A in ("C:\\Users\\SVETLO~1\\AppData\\Local\\Temp") do @echo %~fA
输出: C:\\Users\\SVETLO~1\\AppData\\Local\\Temp
说到完整的绝对路径,你已经拥有了。
“短版本”是存在于 VFAT 之前的 8.3 文件名和“完整路径”,因为它是“长文件名”或 LFN。 只要访问相关文件,它们就可以互换。
在 Windows 命令提示符下,您可以使用参数扩展将短转换为长并返回。 请参阅此处的解决方案以获取示例(在您的情况下将答案中的%~sA
替换为%~fA
)。 所以你可以利用它并使用subprocess.run()
调用命令来读取输出。
我不记得 Python 有一个内置函数来进行这种转换。 但是Windows API确实如此:您可能想看看这个将 LFN 转换为短文件名的解决方案,在您的情况下,该函数应该是GetLongPathName()
。
我在 python os 模块中找到了一个开箱即用的解决方案:https ://docs.python.org/2/library/os.path.html#os.path.realpath
它返回长版本路径!
感谢大家!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.