我试图在Mac中将Mac路径转换为POSIX路径.我想转换这样的东西:
'Main HD:Users:sasha:Documents:SomeText.txt'
Run Code Online (Sandbox Code Playgroud)
对此:
'/Users/sasha/Documents/SomeText.txt'
Run Code Online (Sandbox Code Playgroud)
我知道我可以简单地将字符串拆分成一个列表,然后使用正确的分隔符重新加入它.但我相信必须有一个更加优雅的解决方案,我可能会涉及"macpath"或"os.path"python模块.但是,我无法弄清楚这些模块中的功能是否可以在两种格式之间进行转换.
简单的字符串操作解决方案的另一个问题是,如果我有多个HD,那么一个简单的解决方案将无法工作.例如:
如果你有一条路径:
'Extra HD:SomeFolder:SomeOtherText.txt'
Run Code Online (Sandbox Code Playgroud)
我们希望将其转换为:
'/Volumes/Extra HD/SomeFolder/SomeOtherText.txt'
Run Code Online (Sandbox Code Playgroud)
不是:
'/SomeFolder/SomeOtherText.txt'
Run Code Online (Sandbox Code Playgroud)
您可以使用 Pythonssubprocess模块来实现此目的:
#!/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)))
Run Code Online (Sandbox Code Playgroud)
结果:
/主HD/Users/sasha/Documents/SomeText.txt