当你打开终端的时候,会看到例如:

#Windows
C:\Administor\foo\:

#OSX
WindsondeMacBook-Air:~

(这篇文章中,统一使用windows的\,如果使用的是其它系统,只需要替换为\)

这样的字符在行首,这个就是当前执行指令的路径。也就是你的当前路径,那什么是绝对路径和相对路径呢?

举个现实生活的例子:
你在路上遇到你的好朋友李会玩,她问你的公司地址在哪里,你可能有两种答案:

  1. 中国广东省广州市思哲路石室大厦
  2. 以这里为起点,西南方向500米的石室大厦

第一个答案从国家到省份城市全部巨细无遗地描述出来就相当于绝对路径, 第二个答案以当前的位置为起点所描述的就是相对路径。
例如:有个文件存放在

C:\Administor\foo\test.txt

那么你要读取它可以直接读取这个路径

with open('C:\Administor\foo\test.txt', 'r', encoding='utf-8') as f:
    txt = f.readlines()

你也可以根据当前自己的位置找这个文件,假如你打开终端,当前路径是

C:\Administor\foo\:

那么你也可以这样读取

with open('test.txt', 'r', encoding='utf-8') as f:
    txt = f.readlines()

相对路径地址 = 绝对路径的地址-当前路径

test.txt = C:\Administor\foo\test.txt - C:\Administor\foo\

有些特殊的情况是.以及.. 这两个符号分别代表当前路径以及上一级目录,也就是说如果你当前路径是:

C:\Administor\foo\

那么

.\ = C:\Administor\foo\
..\ = C:\Administor\

问题来了,假如文件在

C:\Administor\foo\test.txt

你当前路径为

C:\Administor\foo\cherry\

要如何读取此文件呢?你既可以使用绝对路径的方式直接读取

with open('C:\Administor\foo\test.txt', 'r', encoding='utf-8') as f:
    txt = f.readlines()

也可以

with open('..\test.txt', 'r', encoding='utf-8') as f:
    txt = f.readlines()

其实意思就是返回上一层目录就是先到

C:\Administor\foo

然后再读取文件

###如何在终端显示当前的绝对路径

#Windows
pwd

#OSX
pwd

###如何切换路径
可以使用cd指令

cd [PATH]

这里的path既可以是绝对路径也可以是相对路径,如果当前路径为:

C:\Administor\foo\:

你要跳到

C:\whatever\sunkist\:

就可以

cd C:\whatever\sunkist\
# 或者
cd ..\..\whatever\sunkist\