【发布时间】:2013-01-23 10:28:24
【问题描述】:
系统:Windows 7 64 位上的 Python 2.6
最近我在 Python 中做了很多路径格式化。由于字符串修改总是很危险,我开始使用“os.path”模块以正确的方式进行修改。
第一个问题是这是否是处理传入路径的正确方法?或者我可以以某种方式优化它吗?
sCleanPath = sRawPath.replace('\n', '')
sCleanPath = sCleanPath.replace('\\', '/')
sCleanPythonPath = os.path.normpath(sCleanPath)
现在,为了格式化“sCleanPythonPath”,我只使用“os.path”模块中的函数。这很好用,到目前为止我还没有遇到任何问题。
只有一个例外。我必须更改路径,以便它们不再指向网络存储,而是指向本地驱动器。开始将 'os.path.splitunc()' 与 'os.path.join()' 结合使用。
aUncSplit = os.path.splitunc(sCleanPythonUncPath)
sLocalDrive = os.path.normpath('X:/mount')
sCleanPythonLocalPath = (os.path.join(sLocalDrive, aUncSplit[1]))
不幸的是,由于使用“os.path.join()”处理绝对路径的性质,这不起作用。我在网上找到的所有解决方案都再次使用字符串替换,我想通过使用“os.path”模块来避免这种情况。我有监督什么吗?还有其他的,也许是更好的方法来做到这一点?
非常欢迎所有关于此的cmets!
【问题讨论】:
-
您通过 os.path.join 获得了什么,您希望获得什么?我看不出你需要使用正则表达式做什么。
-
@myusuf3:假设
sCleanPythonUncPath是//host/mount/folder/file.ext,那么我想得到X:/mount/folder/file.ext。不幸的是os.path.join()只返回/folder/file.ext,因为它处理它就像一个绝对路径。你的意思是什么正则表达式调用?replace()的来电? -
有时
\和C:\Program\ Files一样有效,要小心并经常检查。 -
那么我会用排除转义字符的正则表达式替换反斜杠吗?