当前位置: 代码迷 >> 综合 >> 第四周 --- txt/csv/二进制/xlsx/xls/docx/pdf文本的相关读写操作
  详细解决方案

第四周 --- txt/csv/二进制/xlsx/xls/docx/pdf文本的相关读写操作

热度:97   发布时间:2023-12-02 13:17:49.0

第四周python的学习总结

对txt/csv/二进制/xlsx/xls/docx/pdf文本的相关读写操作

一.关于文件文本的操作

  1. 首先了解关于文件的打开:
  • file = open(‘文件目录’,‘相关的操作’,字节编码encoding=‘’)

  • with open(‘文件目录’,‘相关的操作’,字节编码encoding=‘’) as file

这两个都可进行文件的读取写操作:

相关操作:

操作模式 具体含义
'r' 读取 (默认)
'w' 写入(会先截断之前的内容),没有文档会产生新的文档
'x' 写入,如果文件已经存在会产生异常
'a' 追加,将内容写入到已有文件的末尾,会有新的文档
'b' 二进制模式
't' 文本模式(默认)
'+' 更新(既可以读又可以写)
  1. 怎样知道系统文件的编码
import sysprint(sys.getdefaultencoding())

一般系统默认的是utf-8编码。

3.如果打开代码失败,会产生异常,那怎样来捕获:

try … except,try … finally,和一些else,还有raise关键字组成的代码,是代码具有健壮性和容错性

file = open('resources/致橡树.txt', 'r', encoding='utf-8')
try:# 如果读不到数据,read方法会返回Nonedata = file.read(32)while data:print(data, end='')data = file.read(32)
finally:file.close()
file = None
try:file = open('致橡树.txt', 'r', encoding='utf-8')print(file.read())
except FileNotFoundError:print('无法打开指定的文件!')
except LookupError:print('指定了未知的编码!')
except UnicodeDecodeError:print('读取文件时解码错误!')
finally:if file:file.close()

如果try捕获的语句没有出错,就会继续执行try下面的代码,最后执行finally语句,finally后面是关闭文件file.close().

  1. 最后用file.close()关闭文件。
file = open('resources/致橡树.txt', 'r', encoding='utf-8')
try:# 如果读不到数据,read方法会返回Nonedata = file.read(32)while data:print(data, end='')data = file.read(32)
finally:file.close()

还可以对图片进行相关的文件操作

from io import SEEK_END, SEEK_SETfile = open(file='resources/guido.jpg', mode='rb')
# 如果希望获得文件的字节数,可以先用seek方法将文件指针移动到文件末尾
# 然后通过tell方法获取文件指针移动的字节数,这个字节数就是文件的大小
file.seek(0, SEEK_END)
print(file.tell())
# 将文件指针移动到文件最开始的位置
file.seek(0, SEEK_SET)
try:# 读取字节的长度,一般都是2**n的次方data = file.read(512)while data:print(data, end='')data = file.read(512)
finally:file.close()

运用的知识点

  • form io import SEEK_END,SEEK_SET导入该模块可以得到指针的操作,文件的末尾和前面。
  • file.seek(0, 2)指针从开始走到末尾,相当于指针的操作,file.seek(0,SEEK_END)也是一样的含义。
  • file.seek(SEEK_END, SEEK_SET)从文件的末尾走到前端。
  • file.tell()可以的值文件的位置。
from hashlib import md5,sha256hasher = md5()
hasher2 = sha256()
file = open('data/python-3.9.6-amd64.exe')
try:data = file.read(512)while data:# 更新MDS对象数据hasher.update(data)hasher2.update(data)data = file.read(512)
except:print()
finally:file.close()# 获得十六进制形式的MDS哈希摘要
print(hasher.hexdigest())
print(hasher2.hexdigest())

进行文件写操作:

with open('data/小雨康桥的诗.txt',mode='r+',encoding='utf-8') as file:file.seek(0,2)file.write('喜羊羊')file.close()
  • 打开文件后,用file.write()来添加内容.

二.读取csv文件

import csvwith open('data/2018年北京积分落户数据.csv',encoding='gb18030') as file:# delimiter ---> 设置分隔符(默认英文的逗号)# quotechar ---> 包裹字符串的符号(默认是英文的双引号)content=csv.reader(file,delimiter='#',quotechar='"') #declimiter默认逗号for row in content:print(row)
  • 默认的分割符delimiter=‘’,一般都是逗号,可以指定是否为句号。
  • quotechar=’'包裹字符串的符号,默认是英文的双引号。
  • csv.reader()读取出来的是一个列表。

对csv进行读写操作

CSV文件有以下特点:

  1. 纯文本,使用某种字符集(如ASCII、Unicode、GB2312)等);
  2. 由一条条的记录组成(典型的是每行一条记录);
  3. 每条记录被分隔符(如逗号、分号、制表符等)分隔为字段(列);
  4. 每条记录都有同样的字段序列。
with open('data/temperature.txt',encoding='utf-8') as file1:with open('data/result.csv',mode='w',encoding='GBK',newline='') as file2:writer = csv
  相关解决方案