时间:2011-01-06 19:51:12

标签: python windows linux

我有一个python gui,它在Windows上访问文件,如C:\ data和C:\ MyDIR,都在我的doc之外。 在,一个linux系统我创建/ data和/ MyDIR。

我无法访问。我预计在两个系统上总是使用C:\ data和C:\ MyDIR。

如何修复代码或Linux权限以访问目录和子目录。

6 个答案:

答案 0 :(得分:5)

答案 1 :(得分: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,并且首选~/.local/share/yourappnameos.path.join(home, '.local', 'share', 'yourappname')。)

要记住的重要事项是:将其放在'~'扩展到的目录中的某个位置,并在其中包含应用程序的名称,以避免与其他应用程序的数据目录发生冲突。

答案 2 :(得分:1)

首先,也许你想说/ data和/ MyDIR。

其次,它们是/,根文件系统的直接子项,保留给超级用户(root)以及知道他们正在做什么的人。 不幸的是,Windows世界不强制也不鼓励良好实践,因此您可以在C:root中创建这两个目录(几乎与/目录类似)。长话短说,你可能不得不使用root(可能掩盖为sudo)在/中创建这两个目录,这意味着root是他们的所有者,而且它(并且只有它)有权在其中写入。

你最好在家里创建一些类似的dirs(cd~你在那里)使用你的普通用户(因为你普通用户,不是吗?)然后使用它们。

另一方面,您可以使用fuse和ntfs-3g之类的东西来访问原始ntfs文件系统中对应于C的那两个目录:

答案 3 :(得分:1)

linux文件系统使用/作为root。你不能使用\ data和\ MyDir,因为\并不意味着什么。而且,/的默认所有者是名为root的用户。通常,您在计算机上使用与root不同的用户。

因此,默认情况下,您无权在/。

中编写或创建内容

在主目录中选择另一个目录。例如:

〜/ data /& 〜/ MYDIR /

〜/等于/ home / user428862 /其中user428862是您机器上的用户名。

答案 4 :(得分:1)

  

我创建了\ data和\ MyDIR

首先,不,你没有。路径在linux中使用/,而不是\

其次,除非您确切知道自己在做什么,否则不要在根目录中创建目录。没错,你不会因此而伤害任何东西,但这是非常糟糕的做法,除特殊情况外应该避免。

Linux是一个多用户操作系统。如果您有用户可以写入的配置文件,则它们应该位于用户的主目录中。如果您的配置文件是只读的,则应将它们安装在某个位置,例如/etc/

答案 5 :(得分:0)

您在Linux中的哪个位置创建了这些目录? $ HOME下?您可以使用os模块中的字符串'sep'确定路径分隔符,即os.sep,然后根据其返回值进行acct。我的想法就像:

导入os

dirs = [os.sep +“data”,os.sep +“MyDIR”]

但一切都取决于你想做什么。如果可以,请进一步解释您的需求。