2014-11-05 14 views
1

我是一名自學,業餘,純粹的休閒程序員。我不明白所有花哨的編程術語,除了本網站,我當然沒有任何好的資源,我可以在那裏尋求幫助。 (即,請爲我減弱它!)我想我的問題在這裏有點常見,但我真的無法在Google或本網站上找到任何答案,可能是因爲我不知道正確的術語來搜索對於。作爲Python的初學者,我應該如何處理安裝目錄?

~~~

說了這麼多,我覺得我有關於Python的基礎相當紮實掌握。現在,我創建了一個我想與朋友分享的應用程序。我的應用程序使用我寫入代碼本身的目錄路徑訪問我的計算機上的JPEG圖像文件。但是,我希望我的朋友能夠將這些圖像文件存儲在他們的計算機上的任何位置,而不一定在我一直使用的文件夾中。

承擔做到這一點的最好辦法是讓我的朋友爲自己選擇的目錄路徑,然後在他們的計算機上的預定位置自己選擇的目錄路徑寫入文件。然後,我的應用程序將文件的位置預先寫入其代碼中。這樣,在預定位置打開文件就變得非常容易,然後該文件將我的應用程序指向我朋友選擇的目錄路徑。

1.)我的直覺是否有誤導?有沒有更好的方法來做到這一點?

2.)如果您認爲我的一般方法是合理的,那麼應用程序在安裝時通常會存儲其目錄路徑的計算機上是否有良好/常見的位置?

任何建議 - 或任何推薦的資源 - 將非常感謝!謝謝!

+0

這是絕對正確的。壞消息是它是特定於操作系統的,並且您需要了解所有3級如何在該級別上運行才能正確執行。 – 2014-11-05 23:57:56

+0

好的,但我可以去哪裏學習如何做?第一步是什麼?有什麼文章/資源可以讓我開始? – 2014-11-06 00:42:43

回答

1

好了,標準方式做到這一點是很多更加複雜和特定於平臺的:

在傳統的Unix,這是非常簡單的;你創建一些簡單的格式(例如文本文件,通過ConfigParser使用姓名的人士稱,~/.myprogram.cfg,你寫一行它看起來像image_path=/path/to/images

在最現代的Linux系統,或任何其他的freedesktop /基於XDG-系統,你應該(用於GUI應用程序至少),而不是使用一個特殊的目錄中的環境擡起頭來XDG_CONFIG_HOME,回落至~/.config,而不是使用~

在Windows中,標準的地方存儲這樣的東西是Windows註冊表(例如,通過使用winreg),通過爲您的程序創建密鑰並存儲值h名稱image_path和值/path/to/images

在Mac上,存儲這樣的東西是在NSUserDefaults數據庫(例如,通過使用PyObjC,這不是STDLIB的一部分,但不來的內置與蘋果預裝的Python)的開放標準的地方你的程序的默認域,並添加一個值image_path和值...好吧,你可能需要一個Cocoa書籤(甚至可能是一個安全範圍的書籤),而不是一個路徑。

這可能都聽起來方式太複雜。

一個選擇是使用一個庫,它包裝了這一切爲你。如果您已經在使用像Qt這樣的重型框架,那麼它可能具有內置的功能來實現這一點。否則,它可能需要大量的搜索才能找到某種東西。

一個簡單的選擇就是假裝一切都像傳統的Unix。這將適用於Windows和Mac。在某些Windows版本上,您的配置文件在其主目錄中可見會稍微麻煩,但這並不是什麼大問題。這意味着你不會得到Mac提供的一些獎勵功能,例如,如果用戶將其移動到其他硬盤上的其他位置,可以神奇地跟隨該目錄,或者如果他重新安裝OS X並遷移其舊設置時記住設置,但通常情況下,這很好。

在極端之間,你可以假裝一切都像Linux一樣,在Windows和Mac上使用特殊且不顯眼的位置來顯示文件,就像你在那裏一樣。這兩個平臺都有API來查找特殊目錄,在Windows上稱爲「應用程序數據」,在Mac上稱爲「應用程序支持」。分別使用PyWin32或PyObjC,這些查找起來相當容易。 (例如,請參閱this answer。)然後,您只需在Windows上創建一個名爲My App的子目錄,或在Mac上創建com.mydomain.myapp,然後將文件存儲在該目錄中。

+0

謝謝,謝謝,謝謝,謝謝!你真棒!完全回答了我的問題。這正是我所期待的! – 2014-11-06 00:47:35

+0

@MikeS .:您是否需要任何其他信息,比如在哪裏可以找到有關如何爲註冊表項/首選項域命名或調用哪些函數的MSDN和Apple文檔,或者是否足以開始使用? – abarnert 2014-11-06 01:16:20

+1

http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html – 2014-11-06 01:17:33