PyTorch | PyTorch报错 OSError: [Errno 13] Permission denied: '/mnist'

最近在学习PyTorch,今天想写一个CNN做一下分类,可是问题百出,现将问题整理一下。

环境

Ubuntu14.04+anaconda3+python2

问题描述和解决过程

按照Pytorch实现卷积神经网络CNN 的教程完成了导包、数据预处理、定义网络结构的工作,于是想试一下结果,这个时候问题来了。

我在Ancona的虚拟环境里编写了test.py文件,

以普通用户的身份运行该程序,出现了权限的问题,如下图所示。

PyTorch | PyTorch报错 OSError: [Errno 13] Permission denied: '/mnist'_第1张图片

 

先是切换到了root用户下,我的感觉是root权限最大,应该没问题,可是事与愿违,

PyTorch | PyTorch报错 OSError: [Errno 13] Permission denied: '/mnist'_第2张图片

后来查看python版本,发现是系统自带的版本

PyTorch | PyTorch报错 OSError: [Errno 13] Permission denied: '/mnist'_第3张图片

我觉得很玄学,在Ancona的环境下切换到root用户,感觉已经跳出来了这个环境,我现在也不能想明白这个事情。大家有什么想法吗?

 

于是我去查百度,发现https://blog.csdn.net/weixin_39970417/article/details/80494923这篇文章,于是按照他说的修改了权限,可还是不行。最后我发现了问题所在,我的数据集存放的位置在根目录下,把这个路径修改到普通用户下就可以了。

教程里面的路径是:

修改后

这就ok了。


补充知识点

这里我把chmod 和chown搞混了,这里也在记录一下。

linux里面的文件有拥有者和操作的两种属性,chown和chmod正好可以修改这两个属性。

  • chown用来修改某个目录或文件的用户名和用户组的

用法:  chown 用户名:组名 文件路径

例1:chown root:root /tmp/tmp1

把tmp下的tmp1的用户名和用户组修改成root和root(只修改了tmp1的属组)

例2:chown -R root:root /tmp/tmp1

把tmp下的tmp2下的所有文件的属组都改成root和root。

  • chmod修改某个目录或文件的访问权限

用法:chmod [who] [+ | - | =] [mode] 文件名

命令中个选项的含义为:

操作对象who可以是下述字母中的任一个或者组合:

u 表示“用户(user)”,即文件或目录的所有者。

g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。

o 表示“其他(others)用户”。

a 表示“所有(all)用户”,它是系统默认值。

操作符可以是:

+  添加某个权限

-   取消某个权限

=   赋予给定权限并取消其他所有权限(如果有的话)。

设置 mode 所表示的权限可用下述字母的任意组合:

r  可读。

w  可写。

x 可执行。

只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x属性。

s  在文件执行时把进程的属主或者组ID设置为改文件的文件属主。

方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。

t   保存程序的文本到交换设备上。

u  与文件属主拥有一样的权限

g  与和文件属主同组的用户拥有一样的权限

o  与其他用户拥有一样的权限

 

 

 

 

 

 

 

 

你可能感兴趣的:(Linux)