解決方案:正如Thomas指出的,我得到的任務幾乎不可能實現,並且數據必須在使用模板結構後確定由任何操作系統可以相當容易地覆蓋,並且從來沒有一種方法可以保證預構建的模板可以正確應用。我向所有回覆的人表示感謝(即使我是密集起來以獲得它)...-Ppython os.path.expanduser()這是否總是如此
我目前無法訪問基於Mac或Windows的計算機,而且我正在一個跨平臺的項目(Win/Lin/Mac)。
在Linux上從一個電話
os.path.expanduser('~')
回報/home/<user>
在任何操作系統
現在$ HOME目錄結構中含有最後一點是共同的所有路徑,(在我的Linux返回安裝主路徑默認爲/home/<user>
,使/home
成爲最後的共同點)。
所以我的問題(我現在不能簡單地測試)是這樣的: 在windows和mac上,除了一些不尋常的重新配置(軟件產品是針對普通的joe家庭用戶和青少年)是返回的最後部分路徑始終是第一個非公共路徑部分?
(這個問題可以更加清楚,但我絆了這怎麼解釋這是改寫三項)
編輯:讀出由下面的評論phihag鏈接的文章之後,我覺得他是要求更好地說明我的預期用途(不可能的規格說明)。 我想要做的是確定從os.path.expanduser('~')
返回的部分,我可以將其轉換爲新的相對路徑定義的第一部分,然後我可以從中創建針對每個用戶的特定於應用程序的更多目錄結構。相當於/home/<user>/.config/<MyAppHere>
或\Documents and Settings\<user>\Application Data\Roaming\<MyAppHere>
。我的最終結果將使用(如果這個問題能爲我的意圖來確定真)以下:
# Assumes linux system and home path of /home/<user
head, tail = os.path.split(os.path.expanduser('~'))
userConfigPath = os.path.join(tail,'.config',MYAPPNAME)
# userConfigPath then gets written to a config file which is used by the program
# to determine where (within a greater structure) to look for a user based
# configuration which expands or overrides system configuration options.
編輯:托馬斯·奧羅斯科(下)交換信息後: 在這個階段,軟件執行的,這不是不知道在哪裏尋找自定義用戶配置。從配置文件讀取什麼不是絕對地址,而是如何爲配置文件構建絕對地址的模板。
有問題的軟件與視頻遊戲有關,並且具有青少年或成年人在標準家用計算機上工作的預期用戶羣。大多數這些用戶不使用特殊的配置選項,如定製的家庭用戶目錄位置。這部分代碼適用於任何操作系統的所謂規範,並且無視對所討論的操作系統進行自定義的可能性。雖然是不好的做法編程,這是我目前堅持。
我不會認爲這是真的。在Windows中,RDS的主目錄最終會出現在陌生的地方。 –
甚至在幾乎所有的Linux機器上都是如此。即使掛載'/ home'失敗,root也必須能夠登錄;因此'〜root'通常只是'/ root'。你能描述一下你的問題嗎?沒有冒犯,但要小心[將問題分解成兩部分,一個簡單和一個不可能]的常見謬誤(http://blogs.msdn.com/b/oldnewthing/archive/2011/11/04/10233798。 ASPX)。 – phihag
@ Guy什麼是RDS? @ phihag程序拒絕以超級用戶身份運行(現在閱讀你的鏈接) – Jase