我有一个python gui,它在Windows上访问文件,如C:\ data和C:\ MyDIR,都在我的doc之外。 在,一个linux系统我创建/ data和/ MyDIR。
我无法访问。我预计在两个系统上总是使用C:\ data和C:\ MyDIR。
如何修复代码或Linux权限以访问目录和子目录。
答案 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/yourappname
:os.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”]
但一切都取决于你想做什么。如果可以,请进一步解释您的需求。