使用环境变量将Windows路径转换为路径

时间:2017-07-25 12:39:43

标签: python environment-variables

是否有一个Python库采用Windows路径并用环境变量替换扩展的环境变量?

例如:

C:\Users\Username\Documents\Text.txt -> %USERPROFILE%\Documents\Text.txt
C:\Windows\System32\cmd.exe -> %WINDIR%\System32\cmd.exe
C:\Program Files\Program\Program.exe -> %PROGRAMFILES%\Program\Program.exe

解释的最佳方式是获得与

相反的功能
os.path.expandvars('some path with environment variables')

也需要支持不同的语言。

C:\Archivos de programa\Progra\Program.exe -> %PROGRAMFILES%\Program\Program.exe

1 个答案:

答案 0 :(得分:1)

这是一个非常重要的问题,因为环境变量可能与字符串的某些部分匹配(例如:PROCESSOR_LEVEL通常是一个数字,所以你应该避免它)。为了确保最佳效率,我会:

  • 对现有环境变量l
  • 进行排序
像这样:

import os

my_string = os.path.normpath(r"D:\Users\JOTD\AppData\Roaming\Adobe\Flash Player")


for k,v in sorted(os.environ.items(),key=lambda x:len(x[1]),reverse=True):
    my_new_string = my_string.replace(v+os.sep,"%{}%{}".format(k,os.sep))
    if my_string != my_new_string:
        break
    my_string = my_new_string

print(my_new_string)