繁体   English   中英

Python获取windows临时目录完整路径

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM