在macthon中将mac路径转换为posix

时间:2015-05-13 02:06:37

标签: python macos path

我一直试图将Mac路径转换为Python中的POSIX路径。我想转换这样的东西:

'Main HD:Users:sasha:Documents:SomeText.txt'

到此:

'/Users/sasha/Documents/SomeText.txt'

我知道我可以简单地将字符串拆分成一个列表,然后使用正确的分隔符重新加入它。但我相信必须有一个更加优雅的解决方案,我可能会涉及“macpath”或“os.path”python模块。但是,我无法找到这些模块中的一个功能,可以在两种格式之间进行转换。

简单的字符串操作解决方案的另一个问题是,如果我有多个HD,那么一个简单的解决方案将无法工作。例如:

如果你有一条路径:

'Extra HD:SomeFolder:SomeOtherText.txt'

我们希望将其转换为:

'/Volumes/Extra HD/SomeFolder/SomeOtherText.txt'

不要:

'/SomeFolder/SomeOtherText.txt'

2 个答案:

答案 0 :(得分:2)

您可以使用Pythons subprocess模块:

#!/usr/bin/python

import subprocess

def asExec(ascript):

    osa = subprocess.Popen(['osascript', '-'],
                           stdin=subprocess.PIPE,
                           stdout=subprocess.PIPE)
    return osa.communicate(ascript)[0]

def asConv(astr):

    astr = astr.replace('"', '" & quote & "')
    return '"{}"'.format(astr)

def aScript(aspath):

    ascript = '''
    set posixPath to POSIX path of {0}
    '''.format(asConv(aspath))
    return ascript

aliasPath = "Main HD:Users:sasha:Documents:SomeText.txt"
print(asExec(aScript(aliasPath)))

<强>结果:

  

/ Main HD / Users / sasha / Documents / SomeText.txt

答案 1 :(得分:1)

标准库中没有任何方法。 os.path为当前操作系统提供路径操作方法,并且没有转换路径样式或更改分隔符的方法。特定的os路径操作模块(例如macpathposixpathntpath不包含转换路径分隔符号等的方法。 (来源:os.path docs

因此,我认为用字符串操作替换分隔符是解决此问题的合理方法。