文件是存储在辅助存储器上的数据序列,可以包含任何数据内容。
文件有两种类型:文本文件和二进制文件
绝对路径
就是真实的路径,是计算机中完整路径,必须准确,否则不能找到,起点是系统的根目录,也就是各个盘符
例如:C:/Users/123/Desktop/python
相对路径
文件相对于当前工作目录的路径(.\表示当前目录,…\表示当前目录的父目录)
通过os包处理路径:
os.path.abspath('.') #'D:\\Environment\\python'
os.path.isabs(os.getcwd()) #True
os.path.relpath('D:\\Environment\\python',"D:\Code") #'..\\Environment\\python'
path = 'D:\\Environment\\python'
os.path.basename(path)#'python'
os.path.dirname(path)#'D:\\Environment'
python中使用open函数打开文件,open的语法如下:
<变量名> = open(<文件名>, <打开模式>, <编码类型>)
第三个编码类型可以不写,默认utf-8,第二个打开模式不写默认以只读方式打开。
文件的打开模式如下:
模式 | 描述 |
---|---|
t | 文本模式 (默认)。 |
x | 写模式,新建一个文件,如果该文件已存在则会报错。 |
b | 二进制模式。 |
+ | 打开一个文件进行更新(可读可写)。 |
U | 通用换行模式(不推荐)。 |
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
使用close关闭文件,语法如下:
<变量名>.close
实例:
f = open("test.txt", "r") #使用相对路径
print(f.read()) #读取文本文件
f.close() #关闭文件
方法 | 描述 |
---|---|
.readall() | 读取整个文件内容,返回一个字符串或者字节流 |
.read(size=-1) | 从文件中读取整个文件内容,如果给定参数,读取前size个字节的字符串或字节流 |
.readline(size=-1) | 从文件中读取一行内容,如果给定参数,读取前size个字节的字符串或字节流 |
.readlines(hint=-1) | 从文件中读取所有行,如果给定参数,读取前hint行 |
f = open("test.txt", "r+", encoding="utf-8") #用r+方式打开,可读可写
print("read:", f.read())
f.seek(0) #将文件指针移动到文件开头
print("readline:", f.readline())
f.seek(0) #将文件指针移动到文件开头
print("readlines:", f.readlines())
f.close() #将文件指针移动到文件开头
#结果:
read: hello
北京
上海
广州
深圳
readline: hello
readlines: ['hello\n', '北京\n', '上海\n', '广州\n', '深圳']
这里每读一次文件之后要将文件指针移动到开头,以方便下次读文件,关于文件指针后面会有。
方法 | 描述 |
---|---|
.write(s) | 向文件写入一个字符串或字节流 |
.writelines(lines) | 将一个元素全为字符串的列表写入文件 |
f = open("test.txt", "w+", encoding="utf-8") #以w+形式打开文件。原文件内容会被清空
f.write("chongqing")
f.write('\n') #写入一个换行
s = ["A", "B", "C"]
f.writelines(s)
f.close()
#test文件内容:
chongqing
ABC
容会被清空
f.write(“chongqing”)
f.write(’\n’) #写入一个换行
s = [“A”, “B”, “C”]
f.writelines(s)
f.close()
#test文件内容:
chongqing
ABC