一、绝对路径和相对路径
程序操作某个文件,首先需要知道某个文件的位置,因此我们先简单讲一下文件路径。
文件路径分为绝对路径和相对路径:前者是完整路径,即系统根地址开始查询存储某个文件时的完整路径访问过程;后者则是相对当前而言,如何找到目标文件。
举个例子,某个系统中存放了file1至file5共5个文件,存放位置如图,图中“xxx/”表示目录或文件夹:

注意,“/”表示根目录,Linux、MacOS等系统以“/”表示存放所有文件或目录的最高父目录,无论系统有几个磁盘,都统一至“/”进行管理。Windows则是通过C、D盘等名称作为当前磁盘的根文件夹,没有类似“/”的高于C、D盘的父文件夹。
若使用绝对路径找到file3.so文件,则需写为:/home/dir2/file3.so,若为Windows则写为:C:\home\dir2\file3.so,其中“.so”表示文件拓展名,需要写明。Windows同时支持使用斜杠“/”和反斜杠“\”来分隔路径中的文件夹,而Linux、MacOS则只支持“/”。为方便,后续涉及目录时,我们统一使用“/”。
假设dir1是Python工作目录,我们需要访问file3.so,除使用绝对路径外,还可以使用相对路径:../dir2/file3.so,其中“..”表示当前目录的父目录,此处即home。若访问file4.cpp,则可以写作:../../root/dir3/file4.cpp。若访问file1.txt,则可以使用相对路径:./file1.txt,直接写:file1.txt,“.”表示当前目录,可以省略。
二、文件的打开和关闭
(1)打开文件
Python提供了open函数(无需引入模块),用于打开某个文件,函数返回文件指针,用于对文件进行处理:
fp = open("dir/file.txt", mode="r", encoding="utf-8")除文件路径作为参数外,常见会用到的两个参数为mode和encoding。其中,encoding用于控制文件的编码方式,例如某些文本文件是“GBK”等特殊编码格式,就需添加此参数。而mode主要用于控制文件的打开方式,常用的有以下几种:
r:只读,不能写入,默认模式。以只读方式打开文件,通常是文本文件,指针放在文件的开头。
w:只写,不能读取。如果文件已存在则打开并从头开始编辑,原有内容被删除。如果不存在,创建新文件。
a:追加。如果文件已存在,文件指针放在文件结尾,即新内容将会写到已有内容之后。如果不存在,则创建新文件。
rb:默认模式,类似“r”,但以二进制格式打开一个文件(例如图片、视频)用于只读。
wb:以二进制格式打开一个文件只用于写入,其他类似“w”。
ab:以二进制格式打开一个文件只用于追加,其他类似“a”。
r+:打开文件用于读写,文件指针放在文件开头。
w+:打开一个文件用于读写,其他类似“w”。
a+:类比“w+”。
(2)关闭文件
当文件操作完成时,建议使用close函数来关闭该文件,将对文件的修改从内存写入到磁盘,避免文件出错:
fp.close()若害怕忘记调用close,则可以使用“with”语句,其会进行自动管理。同样需要注意对缩进的控制:
with open("dir/file.txt", mode="r", encoding="utf-8") as fp:content = fp.read()print(content)
在with中的语句执行完后,解释器会自行调用close,释放文件指针,关闭文件。
往期回顾: