Python从入门到精通,100天就够了!(11)——办公自动化(1)文件读写
文章目录
- 读写文本文件
- 读文本文件
- 写文本文件
- 上下文语法
- 读写二进制文件
- 读取Python官方解释器文件,计算md5哈希码
- 将100以内的质数输出到文件中每行一个数。
读写文本文件
读文本文件
在Python中,我们通过open
函数来打开文件。使用open
函数时,通过指定文件名``操作模式``字符编码
等信息,达到怎样打开文件和怎样读写。
完整语法为:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
操作模式 | 具体含义 |
---|---|
'r'
|
读取 (默认) |
'w'
|
写入(会先截断之前的内容) |
'x'
|
写入,如果文件已经存在会产生异常 |
'a'
|
追加,将内容写入到已有文件的末尾 |
'b'
|
二进制模式 |
't'
|
文本模式(默认) |
'+'
|
更新(既可以读又可以写) |
这张表就是操作模式的方法解释,下面我们来看具体例子。
file = open(file='resources/致橡树.txt', mode='r', encoding='utf-8')
data = file.read()
print(data, end='')
file.close()
首先使用open
函数创建一个名为file的对象,指定打开文件为file='D:/Python/resources/致橡树.txt'
,对文件操作模式为mode='r'
,字符编码为encoding='utf-8'
。对file对象
使用read()
方法,再把读到的内容打印出来。最后再关闭文件。
除了使用文件对象的read
方法读取文件之外,还可以使用for-in
循环逐行读取或者用readlines
方法将文件按行读取到一个列表容器中,代码如下所示。
import timefile = open('resources/致橡树.txt', 'r', encoding='utf-8')
for line in file:print(line, end='')time.sleep(0.5)
file.close()file = open('resources/致橡树.txt', 'r', encoding='utf-8')
lines = file.readlines()
for line in lines:print(line, end='')time.sleep(0.5)
file.close()
写文本文件
如果要向文件中写入内容,可以在打开文件时使用w
或者a
作为操作模式,w
会截断之前的文本内容写入新的内容,a
是在原来内容的尾部追加新的内容。
file = open('resources/致橡树.txt', 'a', encoding='utf-8')
file.write('\n标题:《致橡树》')
file.write('\n作者:舒婷')
file.write('\n时间:1977年3月')
file.close()
也可以使用下面的代码来完成相同的操作。
lines = ['标题:《致橡树》', '作者:舒婷', '时间:1977年3月']
file = open('resources/致橡树.txt', 'a', encoding='utf-8')
for line in lines:file.write(f'\n{line}')
file.close()
上下文语法
在上面的使用中,我们既需要写打开文件,还需要写关闭文件的代码,这是很麻烦的事情。我们可以使用with
上下文语法在文件操作完成后自动执行文件对象的close
方法,这样可以让代码变得更加简单。使用方法如下:
with open('resources/小雨康桥的诗.txt', mode='a', encoding='utf-8') as file:file.write('我做不成燕子\n')file.write('所以我飞不过感情的墙\n')file.write('我做不成树\n')file.write('因此也撑不破伤心的网\n')
读写二进制文件
读写二进制文件跟读写文本文件的操作类似,但是需要注意,在使用open
函数打开文件时,如果要进行读操作,操作模式是'rb'
,如果要进行写操作,操作模式是'wb'
。还有一点,读写文本文件时,read
方法的返回值以及write
方法的参数是str
对象(字符串),而读写二进制文件时,read
方法的返回值以及write
方法的参数是bytes-like
对象(字节串)。下面的代码实现了将当前路径下名为guido.jpg
的图片文件复制到吉多.jpg
文件中的操作。
with open('resources/guido.jpg', 'rb') as file1:
data = file1.read()
with open('resources/吉多.jpg', 'wb') as file2:
file2.write(data)
如果要复制的图片文件很大,一次将文件内容直接读入内存中可能会造成非常大的内存开销,为了减少对内存的占用,可以为read
方法传入size
参数来指定每次读取的字节数,通过循环读取和写入的方式来完成上面的操作,代码如下所示。
with open('resources/guido.jpg', 'rb') as file1, open('resources/吉多.jpg', 'wb') as file2:
data = file1.read(512)
while data:file2.write(data)data = file1.read(512)
读取Python官方解释器文件,计算md5哈希码
下面我们进行练习,读取二进制文件。读取Python官方解释器文件,计算md5哈希码。我们将读出的md5哈希码和官网上的进行比对,这样就知道我们下载的Python官方解释器是否被恶意篡改。
import hashlibhasher = hashlib.md5()
with open('resources/python-3.9.6-amd64.exe','rb') as file
data = file.read(512)
while data:# 更新MD5对象的数据hasher.update(data)data = file.read(512)
# 获得十六进制形式MD5哈希摘要
print(hasher.hexdigest()) #ac25cf79f710bf31601ed067ccd07deb
通过对比,我们计算出来和官网给出的md5哈希码一致,说明我们的解释器没有问题。
将100以内的质数输出到文件中每行一个数。
代码如下:
with open('resources/100以内的质数.txt', mode='a', encoding='utf-8') as file:for num in range(2, 101):for i in range(2, num+1):if num % i == 0:breakif num == i:file.write(f'{str(num)}\n')
Python从入门到精通,100天就够了!(11)——办公自动化(1)文件读写相关推荐
- Python从入门到精通,100天就够了!(1)——Python初体验
文章目录 从小白到半个程序员 Python初体验 Python语言元素之变量 Python语言元素之运算符 从小白到半个程序员 毫无疑问,Python是当下最火的编程语言之一,根据TIOBE编程语言 ...
- Python从入门到精通 - 入门篇 (下)
上一讲回顾:Python从入门到精通 - 入门篇 (上) 接着上篇继续后面两个章节,函数和解析式. 4 函数 Python 里函数太重要了 (说的好像在别的语言中函数不重要似的).函数的通用好处就不用 ...
- python从入门到精通pdf百度云下载-跟老齐学Python从入门到精通 电子版(pdf格式)...
跟老齐学python从入门到精通是一款由老齐写作的Python电子书籍.书籍讲述了零基础读者的Python入门教程,内容涵盖了Python的基础知识和初步应用,需要的赶紧在巴士下载站下载吧! 目录: ...
- 零基础python从入门到精通 pdf-跟老齐学Python从入门到精通 电子版(pdf格式)
跟老齐学python从入门到精通是一款由老齐写作的Python电子书籍.书籍讲述了零基础读者的Python入门教程,内容涵盖了Python的基础知识和初步应用,需要的赶紧在巴士下载站下载吧! 目录: ...
- python从入门到精通pdf-跟老齐学Python从入门到精通 电子版(pdf格式)
跟老齐学python从入门到精通是一款由老齐写作的Python电子书籍.书籍讲述了零基础读者的Python入门教程,内容涵盖了Python的基础知识和初步应用,需要的赶紧在巴士下载站下载吧! 目录: ...
- python从入门到精通最全总结
python从入门到精通最全总结 python项目总结 一.python入门到精通总结 1.pip 安装和使用 1.1安装 1.2使用 1.3pip批量安装软件包 (这是重点单拿出来) 2.virtu ...
- Python 从入门到精通:一个月就够了
毫无疑问,Python 是当下最火的编程语言之一.对于许多未曾涉足计算机编程的领域「小白」来说,深入地掌握 Python 看似是一件十分困难的事.其实,只要掌握了科学的学习方法并制定了合理的学习计划, ...
- Linux基础(B站视频笔记—— Python教程_600集Python从入门到精通教程)
Python教程_600集Python从入门到精通教程(懂中文就能学会) 07 虚拟机简介 09 Linux内核和发行版 13 为什么要学习Linux终端命令 16 六个常见的终端命令 17 终端命令 ...
- Python 从入门到精通:一个月就够了?真的能行嘛?
毫无疑问,Python 是当下最火的编程语言之一.对于许多未曾涉足计算机编程的领域「小白」来说,深入地掌握 Python 看似是一件十分困难的事.其实,只要掌握了科学的学习方法并制定了合理的学习计划, ...
- python编程从入门到精通pdf-码哥—-Python从入门到精通(全60集),资源教程下载...
课程名称 码哥--python从入门到精通(全60集),资源教程下载 课程目录 1Python编程语言历史及特性 2Python编程语言初接触 3Python程序文件结构 4准备Python编程环境 ...
最新文章
- rsynv+inotify触发试实时同步
- Win2008 R2 IIS7 PHP 5.4 环境搭建图文教程
- HTML5与JavaScript
- 苹果电脑如何删除软件_软件开发公司误将委托人系统数据删除,责任如何认定?...
- MyEclipse优化浅析
- VS2008非托管c++访问webservice服务(以WeatherWS 天气服务 为例)
- sklearn svm如何选择核函数_文本挖掘篇|利用SVM进行短文本分类
- 2 ABAP命名规则
- oracle rtrim(),Oracle ltrim() rtrim() 函数详细用法
- golang 读取本机唯一码_UDI医疗器械唯一标识系统,您身边的UDI专家
- C++11 处理时间和日期的处理,以及chrono库介绍
- python之celery使用详解一
- c语言斐波那契数列前20项每行5个数,求c++:源程序。前20项斐波那契数列 ,要求输出的时候每行输出五个...
- Liferay Portlet 结构分解
- .net core部署到Ubuntu碰到的问题
- shine 插件_《SHINE》正式上线|GBZ将你带入重重的紫色迷雾中
- HBuilder js,css压缩,增强代码的安全性
- 操作系统总结(大全)
- 第十一周项目二----用二叉树求解代数表达式
- 蓝桥杯 大臣的旅费 JAVA
热门文章
- opencv小程序:全景拼接
- 思科网络工程师自测题答案篇--【问题分析与发散思考】-晁海江-专题视频课程...
- 2015.12.13
- 为什么V8引擎这么快?
- 云壳卸载会记录吗_行车记录仪自带电子狗违法吗?记录仪电子狗会扣分吗
- revit软件中怎么创建水平剖面?
- 向Spotify学习如何设计产品(转)
- LeetCode Database知识点总结 - 1587
- wifi 荣耀手机usb_华为/荣耀路由器接了USB3.0存储设备后为什么2.4G的WiFi网速变慢了?...
- 数十位云栖专家齐聚京颐,畅谈智慧医疗未来趋势