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

第四周python的学习总结

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

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

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

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

相关操作:

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

print(sys.getdefaultencoding())

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

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

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

file = open('resources/致橡树.txt', 'r', encoding='utf-8')
try:
    # 如果读不到数据,read方法会返回None
    data = 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方法会返回None
    data = file.read(32)
    while data:
        print(data, end='')
        data = file.read(32)
finally:
    file.close()

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

from io import SEEK_END, SEEK_SET

file = 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,sha256

hasher = 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 csv

with 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. 纯文本,使用某种字符集(如ASCIIUnicodeGB2312)等);
  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 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值