系統: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