# 文件操作 # 1、打开文件,得到文件句柄并赋值给一下变量 # 2、通过句柄对文件进行操作 # 3、关闭文件 # 文件的读操作 f = open('test.txt', 'r', encoding='utf-8') # 文件打开的模式 r(只读),默认为只读 # read() 读取所有的文件内容,读取完后,光标到文件末尾 data = f.read() # readable() 代表文件是否可读 print(f.readable()) # readline() 读取一行,光标到下一行 print(f.readline(), end='') print(f.readline(), end='') print(f.readline(), end='') print(f.readline(), end='') # readlines() 把文件每行内容都读取出来放在一个列表中 print(f.readlines()) f.close() # 文件的写操作 f = open('test1.txt', 'w', encoding='utf-8') # w(只写),如果文件存在,清空文件内容,如果文件不存在创建空文件 # writable() 代表文件是否可写 print(f.writable()) # write() 写入文件,如需要换行需要自己添加 f.write('1111111111111 ') f.write('2222222222222 ') # writelines() 使用列表进行多行写入 f.writelines(['1111 ', '2222 ']) f.close() # 文件的追加操作 f = open('test2.txt', 'a', encoding='utf-8') # a(追加) 可读,文件不存在则创建,存在则只追加内容 f.write('111 ') f.close() # 其它文件的模式 # w 只写模式 不可读,不存在则创建,存在则报错 # r+ 读写:可读可写 # w+ 写读:可读可写 # x+ 写读:可读可写 # a+ 写读:可读可写 # b 表示以字节的方式操作,不能使用encode参数 # rb 或 r+b # wb 或 w+b # xb 或 x+b # ab 或 a+b f = open('test.txt', 'rb') data = f.read() print(data.decode('utf-8')) # 想要查看读取的内容,必须使用decode进行转换为utf-8 f.close() f = open('test.txt', 'wb') data = bytes('hello world', encoding='utf-8') # 必须把要写入的内容转换为2进制 f.write(data) f.close() # closed 判断文件是否被关闭 print(f.closed) # 将文件在内存中的数据即时保存在硬盘中 f.flush() # 一个回车在windows系统中代表 ,在linux系统中代表 # python会自动将 转换为 ,可以使用newline=''来取消它的自动转换 f = open('test.txt', 'r', encoding='utf-8', newline='') # 显示文件文 print(f.name) # 显示当前光标所在的位置 print(f.tell()) # seek() 用来控制光标的移动 f.seek(0) # 只要不是read方法(按字符),其余的移动都是按字节 f.seek(10, 0|1|2) # 三种模式,0表示从文件开头,1表示相对于光标上次的位置,2表示从文件未尾向前,前一个参数必须为负数。 # 使用1,2这两个模式时,文件模式必须为b模式 # truncate() 文件截取 f.truncate(10) # 要使用r+或a+(不能使用w,或w+,因为w与w+会清空文件),保留开始到10个字节,其它都删除