2017-08-09 133 views
0

我有我的計劃的一部分,需要與directories.My當前代碼的工作是:我如何用python 3替換\ /?

path = os.path.join('C:','Users',getpass.getuser(),'AppData','Roaming','Microsoft','Windows','Start Menu','Programs','Startup') 

變量PATH打印:「C:\\用戶名\\ AppData的\\ \\漫遊微軟的Windows \\ \\開始菜單\\程序\\啓動「。

我的問題是如何使無功路打印「C:用戶/名/應用程序數據/漫遊/微軟/在Windows /開始菜單/程序/啓動」

+7

爲什麼你想有關係嗎?在Windows上,'''''是目錄分隔符,'os.path'模塊在這裏做正確的事情。 – Thomas

+0

是的,它只是正確的,並替換做你想要的。 –

+0

儘管從'os.path.join'取決於你的操作系統的「正確的」輸出,你可能也想使用['os.path.realpath']( https://docs.python.org/3/library/os.path.html#os.path.realpath),以避免來自'c:Users'而不是'c:\ Users'的錯誤'。 –

回答

0

正如評論中所建議的那樣,系統就是這樣做的。

您最好更換os.sepos.path.sep但是您可以這樣做。

>>> os.path.sep = '\\' 
>>> os.path.sep 
'\\'    #we have changed the separator 
>>> os.sep.join(['C:','Users',getpass.getuser(),'AppData','Roaming','Microsoft','Windows','Start Menu','Programs','Startup']) 
'C:\\Users\\name\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup' 

但是你可以簡單地使用這雖然,

>>> '\\'.join(['C:','Users',getpass.getuser(),'AppData','Roaming','Microsoft','Windows','Start Menu','Programs','Startup']) 
'C:\\Users\\name\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup' 

嘛都是在評論中提到的一樣!

另外os.path.join不取決於os.sepos.path.sep所以更改它們不會證明任何影響。

+0

請注意,'os.sep.join'是一個簡單的'str.join',而不是專用的'os.path.join'。 –

0

使用字符串的.replace()方法

"C:Users\\name\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup".replace('\\', '/') 

#'C:Users/name/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup' 
0

你可以用 '/' 取代 '\\'

path = path.replace('\\','/')