0

系统: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”模块来避免这种情况。我有监督什么吗?还有另一种,也许是更好的方法来做到这一点?

非常欢迎所有对此的评论!

4

1 回答 1

0

您可以通过删除调用来稍微优化第一部分,replace()因为在 Windows 上将normpath()正斜杠转换为反斜杠:

sCleanPath = sRawPath.replace('\n', '')
sCleanPythonPath = os.path.normpath(sCleanPath)

这里有一些东西可以让你的问题的第二部分在不进行字符串替换的情况下工作:

sSharedFolder = os.path.relpath(os.path.splitunc(sCleanPythonUncPath)[1], os.sep)
sLocalDrive = os.path.normpath('X:/mount')  # why not hardcode the result?
sCleanPythonLocalPath = os.path.join(sLocalDrive, sSharedFolder)
于 2013-02-07T21:52:09.977 回答