python系统找不到指定路径_[Python学习]错误篇二:切换当前工作目录时出错——FileNotFoundError: [WinError 3] 系统找不到指定的路径...

REFERENCE:《Head First Python》

ID:我的第二篇[Python学习]

BIRTHDAY:2019.7.13

EXPERIENCE_SHARING:解决切换当前工作目录时出现的错误——FileNotFoundError

1、错误类型

FileNotFoundError: [WinError 3] 系统找不到指定的路径。: '../HeadFirstPython/chapter3'

在文件夹D:\0tempt,新建了文件夹 HeadFirstPython,其包含子文件夹chapter3。

试图更改 当前工作目录为包含数据文件的文件夹,却出错了……

>>> importos #从标准库导入"os">>>os.getcwd()'D:\\Python37' #当前工作目录

>>> os.chdir('../HeadFirstPython/chapter3') #切换为包含数据文件的文件夹

Traceback (most recent call last):

File"", line 1, in os.chdir('../HeadFirstPython/chapter3')

FileNotFoundError: [WinError3] 系统找不到指定的路径。: '../HeadFirstPython/chapter3'

先把书上的例子放出来:

>>>importos>>>os.getcwd ()'/Users/barryp/Documents'

>>> os. chdir('. . /HeadFirstPython/ chapter3')>>>os. getcwd ()'/Users/barryp/HeadFirs tPython/ chapter3'

对比一下,突然有新发现:

#当前工作目录

我的—— 'D:\\Python37'

书上的—— ' /Users/barryp/Documents '

没错,斜杠符号的不同,'/ '和' \',有不同吗?来试试看——

接下来的一串,是不断探索的结果:

(1)把'/ ' 换成了 ' \'——

还是有错……

>>> os.chdir('..\HeadFirstPython\chapter3')

Traceback (most recent call last):

File"", line 1, in os.chdir('..\HeadFirstPython\chapter3')

FileNotFoundError: [WinError3] 系统找不到指定的路径。: '..\\HeadFirstPython\\chapter3'

(2) 是路径不够完整?那写完整的试试——

还是有错……错误类型改变了

ValueError: chdir: embedded null character in path意思是:嵌入了无效字符

>>> os.chdir('D:\0tempt\HeadFirstPython\chapter3')

Traceback (most recent call last):

File"", line 1, in os.chdir('D:\0tempt\HeadFirstPython\chapter3')

ValueError: chdir: embedded null characterin path

(3)再观察一下——

路径 D:\0tempt\HeadFirstPython\chapter3,是在电脑文件夹搜索栏直接复制过来的,相比以下路径

>>> os.getcwd()

'D:\\Python37' #当前工作目录

斜杠少了一个……

那试着都增加一个——

>>> os.chdir('D:\\0tempt\\HeadFirstPython\\chapter3')>>>os.getcwd()'D:\\0tempt\\HeadFirstPython\\chapter3'

Great! You make it~~

切换当前工作目录操作完整的代码:

>>> importos>>>os.getcwd()'D:\\Python37'

>>> os.chdir('D:\\0tempt\\HeadFirstPython\\chapter3')>>>os.getcwd()'D:\\0tempt\\HeadFirstPython\\chapter3'

(4)再来探究一下:

1、书上的例子中,路径的写法 ——'/ '和' \',有什么不同吗?

2、路径的写法规则

为什么在自己电脑磁盘的文件夹搜索栏里复制的文件路径是单斜杠

D:\0tempt\HeadFirstPython\chapter3

而代码中是双斜杠

'D:\\0tempt\\HeadFirstPython\\chapter3'

>>> os.chdir('D:\\0tempt\\HeadFirstPython\\chapter3')>>>os.getcwd()'D:\\0tempt\\HeadFirstPython\\chapter3'>>> os.chdir('D://0tempt//HeadFirstPython//chapter3') #换成'//'——同样也没错>>>os.getcwd()'D:\\0tempt\\HeadFirstPython\\chapter3'

>>> os.chdir('D:\0tempt\HeadFirstPython\chapter3') #换成'\'——出错了——这种写法错误

Traceback (most recent call last):

File"", line 1, in os.chdir('D:\0tempt\HeadFirstPython\chapter3')

ValueError: chdir: embedded null characterinpath>>> os.chdir('D:/0tempt/HeadFirstPython/chapter3') #换成'/'——同样也没错>>>os.getcwd()'D:\\0tempt\\HeadFirstPython\\chapter3'

'D:\\0tempt\\HeadFirstPython\\chapter3'

'D://0tempt//HeadFirstPython//chapter3'

'D:/0tempt/HeadFirstPython/chapter3'

三种路径的写法都OK

【总结】

书上的例子:

>>>importos

>>>os.getcwd ()

' /Users/barryp/Documents '

>>> os. chdir('. . /HeadFirstPython/ chapter3')

>>>os. getcwd ()

' /Users/barryp/HeadFirstPython/ chapter3'

'. . /HeadFirstPython/ chapter3'

使用的是相对路径,在代码中会出错。原因是什么,学识尚浅,待解决,也请走过路过的大佬指教~

代码修改时,使用的是绝对路径,运行无误。

————————————————————————————————————————————————————————--

咳咳……刚刚查资料时突然解决了这个问题——

../ 表示的是表示上一级目录(也可以理解为 上一级文件夹,上行一个文件夹;

拿上面书上的例子来解释,就是文件夹HeadFirstPython/ chapter3往上一级,就到达目录文件夹/Users/barryp)

./ 表示的是当前目录

来试验一下:

1、将文件夹 HeadFirstPython(包含子文件夹chapter3,子文件夹里存放文件sketch.txt)放在Python安装目录 D:\Python37\0PRACTICES。

>>> importos>>>os.getcwd()'D:\\Python37'

>>> os.chdir('./0PRACTICES/HeadFirstPython/chapter3')>>>os.getcwd()'D:\\Python37\\0PRACTICES\\HeadFirstPython\\chapter3'

因为 文件夹 HeadFirstPython是放在Python默认的当前工作文件夹 'D:\\Python37'中,

故 当前目录 即 'D:\\Python37',代码中用“./”,表示“在当前目录”。

>>> os.chdir('./0PRACTICES/HeadFirstPython/chapter3')

2、将文件夹 HeadFirstPython(包含子文件夹chapter3,子文件夹里存放文件sketch.txt)放在文件夹 D:\0tempt。

>>> importos>>>os.getcwd()'D:\\Python37'

>>> os.chdir('../HeadFirstPython/chapter3')

Traceback (most recent call last):

File"", line 1, in os.chdir('../HeadFirstPython/chapter3')

FileNotFoundError: [WinError3] 系统找不到指定的路径。: '../HeadFirstPython/chapter3'

>>> os.chdir('/0tempt/HeadFirstPython/chapter3')>>>os.getcwd()'D:\\0tempt\\HeadFirstPython\\chapter3'

>>>

在这个例子中,文件夹 HeadFirstPython不是放在Python默认的当前工作文件夹 'D:\\Python37'中,而是同根磁盘的D:\0tempt,

故这时的当前目录不是'D:\\Python37',而是“D:”,代码中未用“./”,直接省略根目录“D:”。

>>> os.chdir('/0tempt/HeadFirstPython/chapter3')

——————————————————————————————————————————————————

/0tempt/HeadFirstPython/chapter3

这种路径表示是正确的,因为这是 相对路径,文件夹0tempt和文件夹Python37 根目录都是D盘。所以省略了根目录D,也是对的。

上面验证了,以下三种路径都ok

'D:\\0tempt\\HeadFirstPython\\chapter3'

'D://0tempt//HeadFirstPython//chapter3'

'D:/0tempt/HeadFirstPython/chapter3'

三种路径的写法都OK

那省略一下根目录:(又是吃饱了折腾一下)

>>> os.chdir('\\0tempt\\HeadFirstPython\\chapter3')>>>os.getcwd()'D:\\0tempt\\HeadFirstPython\\chapter3'

>>> os.chdir('//0tempt//HeadFirstPython//chapter3')

Traceback (most recent call last):

File"", line 1, in os.chdir('//0tempt//HeadFirstPython//chapter3')

FileNotFoundError: [WinError53] 找不到网络路径。: '//0tempt//HeadFirstPython//chapter3'

>>> os.chdir('/0tempt/HeadFirstPython/chapter3')>>>os.getcwd()'D:\\0tempt\\HeadFirstPython\\chapter3'

这里再补充一下绝对路径和相对路径的知识:

绝对路径:

即从最大的根目录开始表示,一直到该文件名。

相对路径:

即该文件自己相对于目标(另一个文件)位置。不论将这些文件放到哪里,只要他们的相对关系没有变,就不会出错。

另外通常使用“../”来表示上一级目录(上行一个文件夹),“../../”表示上上级的目录(上行两个文件夹)(这里的“上行”,可以理解为向着根目录文件夹方向走),

以此类推。 ./表示“当前目录”。

举例:

1、

C盘A文件夹 下有两个 文件X和 文件Y

表示文件X的位置(即路径),两种表示方法:

C:\A\X

这就是绝对路径,指明X文件在C盘A文件夹下,从最大的根目录C盘开始表示出来

X

这就是 相对路径,因为X文件和Y文件都在C:\A下,所以它们的路径前面"C:\A"都是一样,就不用表示出来.

2、

C盘A文件夹 有个X文件,还有一个B文件夹,而B文件夹下有个Y文件.

则文件X和文件Y绝对路径 分别为:

C:\A\X

C:\A\B\Y

如果让X文件来表示Y文件的路径

绝对路径: C:\A\B\Y

相对路径: B\Y (因为X文件和Y文件前面的C:\A这段路径相同就不用写出)。

(折腾完了)

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值