2011-01-06 171 views
0

我有一個python gui,它可以在Windows的C:\ data和C:\ MyDIR之外訪問我的文檔之外的所有文件。 在,我創建的Linux系統/ data和/ MyDIR。從Windows遷移到Linux

我的GUI無法訪問。我預見在兩個系統上總是使用C:\ data和C:\ MyDIR。

如何修復代碼或Linux權限以訪問目錄和子目錄。

回答

5

Chmod是你的朋友。

但是我質疑你的設計。爲什麼你想要在如此高級別的文件系統上擁有特權?你知道每個用戶都有一個家庭目錄,並且它總是在Windows和Linux上進行配置。

你做什麼是一個不好的做法。

+0

謝謝不用擔心不好的做法。我希望系統上的目錄匹配。我不希望我的文件在Windows「我的文檔」目錄中。 – Merlin 2011-01-06 20:09:08

+0

兩個系統上的目錄不能「匹配」,因爲路徑在兩個平臺上的工作方式不同。如果你想擁有一個可移植的應用程序,你需要使用可移植的代碼,並且需要爲每個平臺找到相應的路徑。 – 2011-01-06 20:13:16

+0

好的,我如何在win和linux上編寫「目錄」的可移植代碼。我將不得不重新編寫現在工作的Win代碼。 – Merlin 2011-01-06 20:19:04

1

首先,也許你打算說/數據和/ MyDIR。其次,它們是超級用戶(root)和知道他們在做什麼的用戶保留給/的root文件系統的直接子代。 不幸的是,Windows世界並不強制也不鼓勵好的做法,因此您可以在C:根目錄下創建這兩個目錄(非常類似於/目錄)。長話短說,很可能你必須使用root(可能被掩蓋爲sudo)來將這兩個目錄放在/裏面,這意味着root是它們的所有者,並且它(並且只有它)纔有權寫入它們。

你最好用你的普通用戶(因爲你的有一個普通用戶,你有沒有?),然後使用它們,在你家裏(cd〜和你在那裏)創建一些相似的dirs。

在另一方面,你可以使用類似保險絲和NTFS-3G訪問對應到C原來的NTFS文件系統這兩個迪爾斯:

1

Linux文件系統使用/作爲根。你不能使用\ data和\ MyDir,因爲\並不意味着什麼。此外,/的默認所有者是名爲root的用戶。通常你在機器上使用不同於root的用戶。

因此默認情況下,您沒有權限寫入或在/中創建某些內容。

在您的主目錄中選擇另一個目錄。例如:

〜/數據/ &〜/ MYDIR/

〜/等於到/ home/user428862 /其中user428862是你的機器上的用戶名。

1

我創建\數據\ MYDIR

首先,不,你沒有。路徑在Linux中使用/,而不是\

其次,除非你確切知道你在做什麼,否則不要在根目錄中創建目錄。誠然,這樣做不會傷害任何人,但這是非常糟糕的做法,應該避免,除非特定情況。

Linux是一個多用戶操作系統。如果你有用戶可以寫入的配置文件,它們應該放在用戶的主目錄中。如果您的配置文件是隻讀的,則應該將其安裝在某處,如/etc/

5

將數據放置在Python認爲是任一平臺上用戶的主目錄的目錄中。

home = os.path.expanduser('~') 
datadir = os.path.join(home, '.yourappname') 

如果你不喜歡用點前綴的名字,你可能會考慮使用這樣的事情,而不是:

home = os.path.expanduser('~') 
if os.name == 'posix': 
    datadir = os.path.join(home, '.yourappname') 
else: 
    datadir = os.path.join(home, 'Your App Name') 

(也有一些應用程序不基於UNIX的使用~/.yourappname更多像:。)

要記住的重要事項是:將它放在'~'擴展到的目錄中的某個位置,幷包含您的名稱在其中應用程序,以避免與其他應用程序的數據目錄衝突。

0

你在哪裏在你的Linux中創建這些目錄?在$ HOME下?您可以使用os模塊中的字符串'sep'來確定路徑分隔符,即os.sep,然後根據其返回值進行acct。我想到某事像:

進口OS

迪爾斯= [os.sep + 「數據」,os.sep + 「MYDIR」]

但一切都取決於你想要做什麼。如果可以,請進一步解釋您的需求。

相關問題