系统:Windows 7上的Python 2.6 64位将UNC路径转换为本地路径(以及Python中的一般路径处理)
最近我在Python中做了很多路径格式化。由于字符串修改总是很危险,所以我开始使用'os.path'模块以正确的方式进行。
第一个问题是,如果这是处理传入路径的正确方法?或者我可以以某种方式优化这个?
sCleanPath = sRawPath.replace('\n', '')
sCleanPath = sCleanPath.replace('\\', '/')
sCleanPythonPath = os.path.normpath(sCleanPath)
现在格式化'sCleanPythonPath'我只使用'os.path'模块中的函数。这工作非常好,迄今为止我没有遇到任何问题。
只有一个例外。我必须改变路径,以便它们不再指向网络存储器,而是指向本地驱动器。开始与'os.path.join()'一起使用'os.path.splitunc()'。
aUncSplit = os.path.splitunc(sCleanPythonUncPath)
sLocalDrive = os.path.normpath('X:/mount')
sCleanPythonLocalPath = (os.path.join(sLocalDrive, aUncSplit[1]))
不幸的是,这并不工作,由于如何绝对路径使用“os.path.join()”处理的性质。我在网上找到的所有解决方案都是再次使用字符串替换,我想通过使用'os.path'模块来避免这种替换。我有监督什么吗?有没有其他的,也许有更好的方法来做到这一点?
对此的所有评论都非常欢迎!
你用os.path.join得到了什么,你想得到什么?我没有看到你需要使用正则表达式。 – myusuf3
@ myusuf3:假设'sCleanPythonUncPath'是'// host/mount/folder/file.ext',那么我想获得'X:/ mount/folder/file.ext'。不幸的是,'os.path.join()'只返回'/ folder/file.ext',因为它像绝对路径一样处理它。你的意思是什么正则表达式调用? 'replace()'的调用? –
有时''\''在C:\ Program \ Files'中有效,要小心并始终检查。 – sotapme