python-17 文件操作 IO模块 压缩

xiaoxiao2025-08-06  21

利用with语句

open() write() writelines() 写的是列表 不用手动关闭,系统自动关闭,然后释放资源。 with open(路径)as f f 对象的名字 自定义的名字 with open("D:\data.txt","w")as f: f.write("12334567\n") f.writelines(["abc\n","def\n"]) read() 返回一个字符串 readlines() 读取多行返回的是一个列表 readline() 读取一行 Eg1: print(f.readline()) print(f.read()) print(f.readlines()) f.close() 结果: 12334567 abc def [] Eg2: f = open("D:\data.txt","r") print(f.readline()) print(f.readlines()) print(f.read()) f.close() 结果: 12334567 ['abc\n', 'def\n']

改正代码:

1.路径前加上r 避免转义 2.加上编码方式 with open(r"D:\data.txt","r",encoding="utf-8")as f: for s in f.readlines(): print(s,end=" ") 结果 12334567 abc def

获取系统的默认编码

import sys print(sys.getdefaultencoding()) 结果: utf-8

二进制文件读写

写 模式: wb 写的方式前面加 b with open(r"D:\data1.txt","wb")as f: f.write(b"123456\n") 读 with open(r"D:\data1.txt","rb")as f: b =f.read() print(b) 结果: b'123456\n'

随机文件读写

模式:w+b with open(r"D:\data1.txt","w+b")as f: f.write(b"123456\n") 读取: 模式 : r+b with open(r"D:\data1.txt","r+b")as f: b =f.read() print(b)

IO模块

内存文件的操作: 在内存中创建临时文件,进行读取 在IO模块中提供了两个对象用于二进制文件和文本文件内内存里面的操作 StringIO from io import StringIO f = StringIO("hello\n hi\n Goodbye") for s in f: print(s) 结果: hello hi Goodbye ======================== BytesIO from io import BytesIO f = BytesIO() f.write("中国".encode('utf-8')) f.seek(0) s = f.read() print(s) 结果: b'\xe4\xb8\xad\xe5\x9b\xbd' 另一种方法: from io import BytesIO f = BytesIO() f.write("中国".encode('utf-8')) print(f.getvalue()) 运行结果: b'\xe4\xb8\xad\xe5\x9b\xbd'

压缩

gzip Eg: import sys,gzip filename = sys.argv[0] filenamezip = filename+ '.gz' with gzip.open(filenamezip,'wt') as f: for s in open(filename,'r'): f.write(s) for s in gzip.open(filenamezip,'r'): print(s) python test.py ================= 结果: b'import sys,gzip\r\n' b'\r\n' b'filename = sys.argv[0]\r\n' b"filenamezip = filename+ '.gz'\r\n" b"with gzip.open(filenamezip,'wt') as f:\r\n" b" for s in open(filename,'r'):\r\n" b' f.write(s)\r\n' b'\r\n' b"for s in gzip.open(filenamezip,'r'):\r\n" b' print(s)\r\n'

CSV

逗号分隔文本格式。用来做excel和数据库的数据的导入和导出 创建: 方式1: excel表格创建 数据之间的逗号必须是英文逗号

只能有一个sheet

CSV的读取

csv.reader 对象 import csv def csv1(path1): with open(path1,newline="") as f: f_csv = csv.reader(f) headers = next(f_csv) print(headers) for row in f_csv: print(row) if __name__ == '__main__': csv1("D:\info.csv") ['姓名,性别,年龄'] ['Alice,女,25']

CSV的写入

writerow() 写入一行数据 writerows() 写入多行数据 dialect :只读文件 import csv def csv2(path1): headers = ['学号','姓名','班级','语文'] rows = [('201895444','张三','1602','12'), ('201895423','张一','1603','23'), ('201895445','张四','1604','24')] with open(path1,newline="") as f: f_csv = csv.writer(f) f_csv.writerow(headers) f_csv.writerow(rows) if __name__ == '__main__': csv2("D:\info.csv")
转载请注明原文地址: https://www.6miu.com/read-5034370.html

最新回复(0)