这是一个相对简单的问题,但由于某些原因,我无法找到通过python获取windows临时目录的完整路径的方法,也无法找到堆栈溢出社区中已经发布的类似请求
我正在使用tempfile.gettempdir()命令,但似乎无法捕获完整路径,它将返回简短版本:
'C:\Users\SVETLO~1\AppData\Local\Temp'
这总体上是可行的,但脚本的一个重要部分在后面没有,它需要完整的temp dir路径,即:
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
我在python os模块中找到了一个现成的问题解决方案: https://docs.python.org/2/library/os.path.html#os.path.realpath
它返回长版本路径
谢谢大家
说到完全绝对路径,你已经有了它
“短版本”是VFAT之前存在的8.3文件名,而“完整路径”是“长文件名”或LFN。只要访问相关文件,它们就可以互换
在Windows命令提示符下,您可以使用parameter expansions从短到长再向后转换。请参见解决方案here以获取示例(在您的案例中,将答案中的
%~sA
替换为%~fA
)。因此,您可以利用它并使用subprocess.run()
调用命令来读取输出我想不起来Python有一个内置函数来进行这种转换。但是Windows API有:您可能想看看this如何解决将LFN转换为短文件名的问题,在您的例子中,函数应该是
GetLongPathName()
相关问题 更多 >
编程相关推荐