从Windows迁移到Linux

0 投票
6 回答
523 浏览
提问于 2025-04-16 09:31

我有一个用Python做的图形界面程序,它可以访问Windows上的一些文件,比如C:\data和C:\MyDIR,这些文件都不在我的文档文件夹里。

在Linux系统上,我创建了/data和/MyDIR这两个文件夹。

但是,我的程序无法访问这些文件夹。我希望在两个系统上都能一直使用C:\data和C:\MyDIR这两个路径。

我该如何修改代码或者调整Linux的权限,才能访问这两个文件夹及其子文件夹呢?

6 个回答

1

在Linux系统中,文件系统的根目录是用/表示的。你不能使用\data和\MyDir,因为\在这里没有任何意义。而且,根目录/的默认拥有者是一个叫root的用户。通常情况下,你在机器上使用的用户不是root。

所以默认情况下,你没有权限在/目录下写东西或者创建文件。

你可以选择在你的主目录下的其他目录。例如:

~/data/ 和 ~/MyDir/

这里的~/代表的是/home/user428862/,其中user428862是你在这台机器上的用户名。

5

Chmod是你的好帮手。

不过我对你的设计有些疑问。你为什么想要在文件系统中设置这么高的权限呢?你知道每个用户都有自己的家目录,而且在Windows和Linux上总是有专门用来存放配置的目录。

你这样做是不好的做法。

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')。)

记住一件重要的事:把它放在'~'所代表的目录里,并且在里面加上你的应用名称,这样可以避免和其他应用的数据目录发生冲突。

撰写回答