2.14 Python中路径问题

2.14.1 路径、当前工作目录

在操作系统中,路径是一种电脑文件或目录的名称的通用表现形式,它指向文件系统上的一个唯一位置。
路径可以分为绝对路径相对路径。绝对路径是从根目录开始的完整路径,相对路径是从当前目录开始的部分路径。
当前工作目录
当前工作目录是文件系统当前所在的目录,如果命令没有额外指定路径,则默认为当前目录。
比如,在“C:\Users\Administrator\Desktop\test”文件夹下双击运行了一个批处理或程序,那么该批处理或程序就会以“C:\Users\Administrator\Desktop\test”作为当前的工作目录。
在批处理中,可以使用cd命令来切换工作目录。例如,如果你想切换到桌面,你可以输入:
cd C:\Users\Administrator\Desktop

2.14.2 绝对路径和相对路径

Windows系统中的绝对路径
在Windows系统中,绝对路径是以盘符:\开始,文件夹或文件之间用\分隔。
例如,在Windows操作系统中,Administrator用户的桌面的默认绝对路径为:
“C:\Users\Administrator\Desktop”
这就是一个绝对路径。如果你在桌面上创建了一个名为“test”的文件夹,那么它的绝对路径就是:
“C:\Users\Administrator\Desktop\test”
Linux系统中的绝对路径
在linux系统中,绝对路径是指从根目录(/)开始的完整的文件路径。绝对路径的表示方法如下:

  • 以 / 开头,表示根目录
  • 以 / 分隔每一级目录和文件名
  • 以文件名结尾,如果是目录则可以省略
    例如:

/home/user/myfile.txt # 绝对路径表示一个文本文件
/usr/bin/Python # 绝对路径表示一个可执行文件
/etc # 绝对路径表示一个目录

Windows系统中的相对路径
在Windows系统中,相对路径是指以当前文件所在的目录为参照基础,链接到目标文件的路径。相对路径的表示方法如下:

  • 以 . 开头,表示当前目录
  • 以 … 开头,表示上一级目录
  • 以 \ 分隔每一级目录和文件名
  • 以文件名结尾,如果是目录则可以省略
    例如:

.\myfile.txt # 相对路径表示当前目录下的一个文本文件
…\user\myfile.txt # 相对路径表示上一级目录下的user目录下的一个文本文件
…\etc # 相对路径表示上两级目录下的一个目录

Linux系统中的相对路径
在linux系统中,相对路径是指从当前目录开始的部分文件路径。相对路径的表示方法如下:

  • 以 . 开头,表示当前目录
  • 以 … 开头,表示上一级目录
  • 以 / 分隔每一级目录和文件名
  • 以文件名结尾,如果是目录则可以省略
    例如:

./myfile.txt # 相对路径表示当前目录下的一个文本文件
…/user/myfile.txt # 相对路径表示上一级目录下的user目录下的一个文本文件
…/…/etc # 相对路径表示上两级目录下的一个目录

通过观察上述内容,我们不难发现,在Windows和Linux系统中,表示相对路径的方法几乎一样,就是分隔每一级目录和文件名的符号不一样,Windows中是通过\分隔,而Linux中是通过/分隔。
路径的作用
1、方便我们访问和管理文件或目录;
2、方便我们设置环境变量和执行程序。

2.14.3 Python中使用绝对路径

在Python编程中,如果要操作文件,比如打开某个txt文本文件,那么如果是通过绝对路径的方法是最简单的,只需要将该文件的绝对路径作为参数传入进去就可以了。
Python中通过绝对路径找寻文件和在其它程序中一样,但是需要注意的是,由于在Windows系统中,路径中是通过\符号作为路径分隔符,而在Python编程中,该符号同时是转义符号。所以,我们在Python中,我们需要在路径的分隔符号之前再添加一个转移符号。

# Windows系统中
with open('E:\\Temp\\test.txt', mode='r', encoding='utf-8') as f:
    print(f.read())

我是文件test.txt中的内容

如果不想这么麻烦,则可以在表示文件路径字符串前添加前缀r,代表该字符串里面的内容不进行转义,保持原样:

# Windows系统中
with open(r'E:\Temp\test.txt', mode='r', encoding='utf-8') as f:
    print(f.read())

我是文件test.txt中的内容

使用绝对路径的优缺点
优点:路径清晰明了,使用简单,同一个文件的绝对路径相同。
缺点:路径可能比较长,如果文件位置变化后,绝对径也要跟着变化。不利于后期维护。

2.14.4 Python中使用相对路径

# Windows系统中
with open('..\\user\\myfile.txt', mode='r', encoding='utf-8') as f:
    print(f.read())

我是文件myfile.txt中的内容

Logo

更多推荐