python学习的第二十二天:文件读写
关于文件的简单认知
-
通过文件系统将数据储存到文件中,我们实现了数据的持久化 -
计算机的文件系统是一种存储和组织计算机数据的方法,它使得对数据的访问和查找变得容易 -
文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘、光盘、闪存等物理设备的数据块概念
对文件的操作
文件的打开和关闭
- 通过open函数打开,同时可以通过参数指定文件名、操作模式和字符编码等信息
操作模式 | 具体含义 |
---|
'r' | 读取 (默认) | 'w' | 写入(会先截断/覆盖之前的内容) | 'x' | 写入,如果文件已经存在会产生异常(创建) | 'a' | 追加,将内容写入到已有文件的末尾 | 'b' | 二进制模式(图片) | 't' | 文本模式(默认) | '+' | 更新(既可以读又可以写) |
具体使用的方式如下:
使用open函数时可以通过encoding参数指定读写文件使用的字符编码,常用编码为utf- 8
文件读写
-
通过read函数读取文件 或者通过循环和readline逐次读行进行读取
file = open('resources/致橡树.txt', 'r', encoding='utf-8')
try:
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')
file.seek(0, SEEK_END)
print(file.tell())
file.seek(0, SEEK_SET)
try:
data = file.read(512)
while data:
print(data, end='')
data = file.read(512)
finally:
file.close()
计算python解释器的MD5哈希码
from hashlib import md5, sha256
hasher = md5()
file = open('resources/python-3.9.6-amd64.exe', 'rb')
try:
data = file.read(512)
while data:
hasher.update(data)
data = file.read(512)
finally:
file.close()
print(hasher.hexdigest())
文件的复制
def file_copy(source_file, target_file):
"""文件拷贝"""
with open(source_file, 'rb') as source:
with open(target_file, 'wb') as target:
data = source.read(512)
while data:
target.write(data)
data = source.read(512)
if __name__ == '__main__':
file_copy('C:/Users/29665/Pictures/猫.jpg')
对csv文件的操作
import csv
with open('resources/temperature.txt') as file1:
with open('resources/result.csv', 'w', encoding='gbk', newline='') as file2:
writer = csv.writer(file2, delimiter='|')
writer.writerow(['ID', 'temperature', 'information'])
content = file1.readline()
while content:
no, temp = content.split()
temp = float(temp)
if temp >= 37.2:
if temp <= 38.5:
info = '发热'
else:
info = '高热'
writer.writerow([no, temp, info])
content = file1.readline()
通过write进行TXT文件的写操作
通过URL下载图片
import requests
resp = requests.get('http://p6.toutiaoimg.com/img/pgc-image/SVlm41hHScGcOO~tplv-tt-cs0:850:285.jpg')
with open('resources/temp.png', 'wb') as file:
file.write(resp.content)
def download_picture(picture_url, filename):
"""下载图片"""
resp = requests.get(picture_url)
with open(filename, 'wb') as file:
file.write(resp.content)
download_picture(
'https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png',
'resources/baidu.png'
)
import uuid
for _ in range(10):
print(uuid.uuid1().hex)
|