python写入二进制文件的库_python之写入二进制文件
概述
计算机都是以二进制存储文件的,如mp3、图片等,文本文件也是如此,在本节中以二进制模式写入文件
写文件的很多操作,与读文件的操作是相同的,建议先看 读取二进制文件
打开文件
读写文件,要先通过内置open()函数打开文件
open('文件路径',mode='模式')
常用参数说明:
file: 必需,文件路径(相对或者绝对路径)。
mode: 可选,文件打开模式,可省略。详细介绍在下面
注意:
采用 二进制 模式读取文件时,不要 指定编码,否则报错:
ValueError: binary mode doesn't take an encoding argument
常用模式:
‘wb’:只写
以二进制格式打开一个文件只用于写入。
如果该文件已存在则打开文件,清空文件内容 并开头开始编辑。
如果该文件不存在,创建新文件。
‘wb+’:读写
以二进制格式打开一个文件用于读写。
如果该文件已存在则打开文件,先 清空文件内容 并从开头开始编辑,也就是说打开文件后读取该文件,内容是空的。写入文件后,可读取文件
如果该文件不存在,创建新文件。
‘ab’:追加
以二进制格式打开一个文件用于追加。
如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。
如果该文件不存在,创建新文件进行写入。
‘ab+’:追加且可读
以二进制格式打开一个文件用于追加。
如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。
如果该文件不存在,创建新文件用于读写。
例子:f=open('d:\\1.txt','wb')
关闭
从 读取文本文件 章节可知,一般情况操作完文件后,应及时关闭
关闭后,将内存中的 数据 立刻 写入 文件中,解释见下面写入文件
f.close()
异常处理
异常处理同读取文件操作,try...finally...和with语句都适用
写入文件
写入是将 内存 中的数据保存在 硬盘 中
写入文件主要有两种方法
方法1
将数据写入文件
len=write(data)
参数
data:要写入文件的数据,二进制字节序列,如bytes等
返回值
返回的是写入的长度,以字节为单位。
例子1:
通过 二进制 模式,将字符串“长风破浪会有时【换行】直挂云帆济沧海”写入文件,代码如下:
with open('c:/users/mym/desktop/6.txt','wb') as f:
len=f.write('长风破浪会有时\r\n直挂云帆济沧海')
print(len)
报错如下:
TypeError: a bytes-like object is required, not 'str'
类型错误,应该类似bytes类型的数据
例子2:
改造上面的程序,调用str的 encode()方法,将字符串编码为bytes类型,采用GBK编码,如下:
with open('c:/users/mym/desktop/6.txt','wb') as f:
len=f.write('长风破浪会有时\r\n直挂云帆济沧海'.encode('GBK'))
print(len)
执行结果如下:
30
在GBK编码中,一个汉字占2个字节,所以写14个汉字是28个字节,在加上换行符\r\n两个字节,一共是30个字节
换行符
用 二进制 模式写入文本文件时,我们要自己写换行符的原始码,在UNIX、linux中的换行符是\n,在windows中换行符是\r\n,各家系统的换行符可能不同,所以要我们自己根据系统写换行符
例子2
上面例子,直接将换行符 写在代码 中,不利于 跨平台
比如:在windows系统上开发,将换行符\r\n写在代码中,但在运行时,可能是在linux系统中,那么写入文件时还是\r\n,与linux系统不符(linux的换行符是\n),可能会出现错误
改造上面的程序,动态获取换行符,如下:
import os
with open('c:/users/mym/desktop/6.txt','wb') as f:
s='长风破浪会有时'+os.linesep+'直挂云帆济沧海'
len=f.write(s.encode('GBK'))
print(len)
方法2(不报错,不推荐)
将序列中的字符串写入到文件,序列必须 全是字符串,如:list、dict等
writelines( [ str ])
参数
str:要写入文件的字符串序列
返回值
无
flush()
刷新缓冲区,将 缓冲区中 的数据立刻 写入 文件中
f.flush()
例子import time
with open('c:/users/mym/desktop/2.txt','wb') as f:
f.write('白日依山尽\n黄河入海流\n')
f.flush()
f.write('欲穷千里目\n更上一层楼\n')
time.sleep(10)
休眠10秒,在10秒内,打开文件,可以看到下面内容:
白日依山尽
黄河入海流
因为执行了flush()方法刷新缓冲区,写入文件。10秒后执行结束,再次将缓冲区中的数据写入文件中,最后结果如下:
白日依山尽
黄河入海流
欲穷千里目
更上一层楼
移动文件指针
从读取二进制文件章节可知,写入带有中文的文本文件时,移动指针可能会造成错误,所以,处理中文文本文件时,一般不要将文件指针移动到文件中间位置。移动到头部不会造成错误
python写入二进制文件的库_python之写入二进制文件相关推荐
- python创建一个csv文件_python如何写入csv
在使用python对文件操作的过程中,你肯定碰到过对csv文件的操作,下面就python对csv文件的操作进行详述. CSV(Comma-Separated Values)逗号分隔符,也就是每条记录中 ...
- Python 技术篇-利用pyperclip库实现读取写入剪切板,超简单
直接pip install pyperclip就可以安装了. 用法也是非常的简单,就是 copy() 和 paste(),比 pywin32 不知道简单多少,有兴趣的可以看下,或是对比下: Pytho ...
- python调用c++动态库_Python调用C/C++动态链接库的方法
本文以实例讲解了Python调用C/C++ DLL动态链接库的方法,具体示例如下: 示例一: 首先,在创建一个DLL工程(本例创建环境为VS 2005),头文件: //hello.h #ifdef E ...
- python图形界面编程库_Python支持哪些图形界面的第三方库
Python支持哪些图形界面的第三方库 发布时间:2020-11-09 10:37:56 来源:亿速云 阅读:58 作者:小新 这篇文章给大家分享的是有关Python支持哪些图形界面的第三方库的内容. ...
- python怎样快速下载库_Python如何急速下载第三方库详解
前言 pip 是一个现代的,通用的 Python 包管理工具 ,是一个安装第三方 库必备的工具,提供了对Python 包的查找.下载.安装.卸载的功能.但是在国内使用有很多因素的限制,一个3.4M的库 ...
- python 股票分析常用库_Python数据分析常用库有哪些?Python学习!
Python为什么受欢迎?因为Python简单.易懂.好用,是一门高级的编程语言;除此之外,Python提供了大量的第三方库,开箱即用,方便.免费,非常适合从事数据分析领域的工作. 大家也都知道,Py ...
- python调用matlab工具库_Python第三方常用工具、库、框架等
Python ImagingLibrary(PIL):它提供强大的图形处理的能力,并提供广泛的图形文件格式支持,该库能进行图形格式的转换.打印和显示.还能进行一些图形效果的处理,如图形的放大.缩小和旋 ...
- python怎么导入pandas库_Python之2-Pandas数据导入导出
Pandas可以读取与存取像CSV\EXCEL\JSON\HTML\SQL数据库等格式的资料,具体如下: 一:从excel中读取数据并另存一张表 #读取excel中的数据 bill=pd.read_e ...
- python怎么导入math库_python怎么导入math库?
Python语言是通过区分类库的方式来划分功能.用户根据自身的需要加载合适的类库,来完成需要的功能.那么如何导入加载类库?下面本篇文章就来给大家以内置类库math为例,介绍加载内置类库的方法,希望对大 ...
最新文章
- trainer setup_Detectron2源码阅读笔记-(一)Configamp;Trainer
- SAP MM 库存地点权限控制
- mysql proxy读写分离实现_使用mysql-proxy实现读写分离
- 小程序中,iOS设备获取蓝牙设备的Mac地址
- 机器学习结构化学习模型_生产化机器学习模型
- 前端学习(2824):数据绑定前的代码编辑器技巧
- hdu 1874(Dijkstra + Floyd)
- moodle3.7中文语言包
- python怎么抓取网页倒计时_python实现的简单窗口倒计时界面实例
- CS224N刷题——Assignment1.3_word2vec
- 苹方字体 for linux,苹果苹方字体/苹方黑体全套完整版下载(ttf版)
- 企业邮箱邮件在网页版显示正常在Foxmail 显示不全
- git 怎么把以前的账号注销_QQ号被注销了,我的游戏账号怎么办?腾讯只用一句话让玩家没话说...
- STM32单片机开发实例 基于STM32单片机的智能行李箱
- 巧用网络分析仪的校准
- 大一微积分笔记整理_大一高数如何做笔记?
- 公众号文章怎么制作?
- linux - linux查看磁盘空间/查看文件分区(挂载点)/查看文件大小
- Error querying database. Cause: java.lang.NullPointerException .The error occurred while handlin
- 《统计学》贾俊平 第一章 导论总结
热门文章
- 解决svn:E200030: sqlite[S11]:database disk image is malformed
- 今天读了JDK1.8源码,知道了并行迭代器Spliterator
- Java学习资料汇总(JavaSE+JavaEE+数据库+框架+笔试题+面试题)
- macos brew zookeeper,安装后zookeeper启动失败?
- 钱币掉落动画android,mpvue实现小程序签到金币掉落动画(api实现)
- 聊聊并发(四)——深入分析ConcurrentHashMap
- 闪电shader_【Shader案例】怎样做出自然的闪电
- leetcode 141 环形链表 C++
- PyChram简单使用教程
- 李春雷 | 夜宿棚花村