基础操作
file : 存储在磁盘中,针对磁盘中的文件的读写
操作步骤:打开文件open()、读写文件read/write()、关闭文件close()
open()打开文件
1.语法
open(文件的路径,打开的方式,[字符集])
文件的路径:URL 统一资源定位符
a.相对路径:给别人指路,有参照物 :’./‘ 当前目录; ’../‘ 当前目录上一级目录
b.绝对路径:收货地址,无参照物直接给地址信息
打开的方式:基础模式 w r x a 扩展模式 b +
w (write写入):a.如果文件不存在,则创建; b.如果文件存在,则打开这个文件,并且清空文件内容; c.文件打开后,文件的指针在文件的最前面。
r (read读取):a.如果文件不存在,则报错; b.如果文件存在,则打开这个文件; c.文件打开后,文件的指针在文件的最前面。
x (xor异或):a.如果文件不存在,则创建; b.如果文件存在,则报错(防止覆盖); c.文件打开后,文件的指针在文件的最前面。
a (append追加):a.如果文件不存在,则创建; b.如果文件存在,则打开这个文件,不会清空文件内容; c.文件打开后,文件的指针在文件的最后面。
b (bytes二进制):wb rb ab xb
+ (plus增强模式可读可写):w+ r+ a+ x+ wb+ rb+ ab+ xb+
字符集:encoding=‘utf-8’
2.高级写法:
> with open(文件路径,打开模式) as 变量 :
> 变量.操作
write()写入内容
格式:文件对象.write(内容) 只能str
with open('./test.txt','a+',encoding='utf-8') as fp:
fp.write('hello world\n')
# hello world
格式:文件对象.writelines(容器类型) 但是容器类型里的元素也得是字符串
with open('./test.txt','a+',encoding='utf-8') as fp:
fp.writelines(['hello world\n','nihao shijie\n'])
# hello world
# nihao shijie
read()读取内容
格式:文件对象.read() 从当前指针位置读取到最后
with open('./test.txt','a+',encoding='utf-8') as fp:
fp.writelines(['hello world\n','nihao shijie\n'])
fp.seek(0)
res_1 = fp.read()
print(res_1)
# hello world
# nihao shijie
格式:文件对象.read(n) 从当前指针位置读取指定的长度
格式:文件对象.readline() 一次只读一行
with open('./test.txt','a+',encoding='utf-8') as fp:
fp.writelines(['hello world\n','nihao shijie\n'])
fp.seek(0)
res_2 = fp.readline()
print(res_2)
# hello world
格式:文件对象.readlines() 返回每一行为一个元素的列表
with open('./test.txt','a+',encoding='utf-8') as fp:
fp.writelines(['hello world\n','nihao shijie\n'])
fp.seek(0)
res_3 = fp.readlines()
print(res_3)
# ['hello world\n', 'hello world\n', 'nihao shijie\n', '\n']
close()关闭文件
格式:文件对象.close()
截断内容
格式:文件对象.truncate(n) 把文件里的内容截断,留下n个字节
with open('./test.txt','a+',encoding='utf-8') as fp:
fp.write('hello world\n')
# #hello world
fp.truncate(5)
# hello
设置指针位置:
fp.seek(0) : 指针位于开头,可以读取之后的内容
fp.seek(0,2) : 指针位于末尾,2指的是从末尾计算,0个偏移量