赞
踩
# with 可以专门用来对文件进行操作 # 使用with以后,不用在手动关闭文件,一旦代码块结束,文件会自动关闭 # open() open用来根据文件的路径,来打开指定文件,并返回一个文件对象 # 写路径的时候,默认的,相对位置 是当前目录./ # 绝对路径指从磁盘的根目录开始的路径 try: with open('./qa.txt') as file_obj: print(file_obj.read()) except FileNotFoundError: print('未找到文件') # 注意事项,大部分操作系统,路径的分隔符都是 / # 但是在windows系统,默认使用 \ 作为分隔符 s = r'hello \n' print(repr(s))
读文件
# 打开文件时,open()默认使用的编码并不是UTF-8,所以在处理中文时无法正常打开 # 在open中可以来指定目标文件的编码 # 可以在open中使用encoding来指定文件的编码 with open('qa.txt', encoding='utf-8') as file_obj: # read()用来读取文件的内容,如果直接调用read()它会读取文件中的所有内容 # 可以在read()中指定读取的长度,注意在读取文本文件时,这个长度表示的是字符的数量 # read()在用的时候,尤其是读取一些很大的文件时,不要一次性读取,容易内存益处 # print(file_obj.read(100)) # 创建一个变量,保存每次读取数据的大小 chunk = 5 content = '' # 调用read()读取文件 while True: text = file_obj.read(chunk) if not text: break content += text print(content)
with open('qa.txt', encoding='utf-8') as file_obj: # readline() 也是用来读取文件,但是它是一行一行的读取,每次调用读取一行 # 如果没有读取到数据返回 空串 # readlines() 同时将整个文件读取,返回的是一个列表,列表中的每一个元素就是一行数据 # while True: # text = file_obj.readline() # if not text: # break # print(text) # ls = file_obj.readlines() # print(ls) # file_obj 本身就是一个可迭代对象,可以直接通过for-in 来读取文本数据 # 每次是读取一行数据 # for line in file_obj.readlines(): # print(line) print(next(file_obj))
文件的写入
# 默认情况,打开一个文件,这个文件是只读 # 如果要修改文件,需要设置打开文件的操作类型 # open的第二参数,用来指定操作模式 # r 默认值,表示读取文件,该操作只能用来读取,当打开不存在的文件时会报错 # w 表示写入文件,使用w操作文件时,如果文件不存在会自动创建,如果文件存在则会截断文件 # a 用来追加 # x 创建一个不存在的文件,如果文件存在则报错 # + 对其他的功能进行扩展 # b 二进制文件(操作的文件是二进制文件) # t 默认值,文本文件 # with open('qa1.txt', 'r+', encoding='utf-8') as file_obj: # result = file_obj.write('中国好') # # write() 用于向问文件中写入一个内容,它会返回写入内容的长度(字符个数) # print(result) with open('qa1.txt', 'rt', encoding='utf-8') as file_obj: print(file_obj.read())
with open('qa1.txt', 'rb') as file_obj:
print(file_obj.read())
二进制形式读取文件
二进制文件复制实现
# 一般读取图片,视频,音频,word,ppt...
with open('qa1.txt', 'rb') as file_obj:
# print(file_obj.read())
# 读取二进制文件时,读取的单位是字节
chunk = 1024 * 64 # 64kb
# 将数据写入到其他的位置
with open('a.txt', 'wb') as new_file:
# while True:
# data = file_obj.read(chunk)
#
# if not data:
# break
# new_file.write(data)
new_file.write(file_obj.read())
a.txt 直接复制的qa1.txt
with open('qa1.txt', encoding='utf-8') as file_obj: # 在操作文件时,在程序中有一个看不见的光标,这个光标在文件中的某个位置 # 当我们读取文件时,会从光标所在位置开始读取 # 当我们写入文件时,也会从光标所在位置开始写入 # tell()方法可以获取光标当前的位置 print('读取前', file_obj.tell()) print(file_obj.read(1)) # seek() 修改光标到指定位置 # seek()可以接受两个参数(第二个参数只在二进制文件时才有意义) # 第二个参数,表示光标计算相对位置 # 第二个参数有三个值: # 0 默认值 光标位置相当于起始位置计算 # 1 表示光标根据当前位置来计算 # 2 从末尾计算 file_obj.seek(0, 1) print('读取后', file_obj.tell())
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。