b是python文件二进制打开,Python核心编程16 ----- 文件的打开(读取),修改,关闭,二进制...
ctrl + 左键点击 进入模块
1.文件打开
文件(file)
通过Python程序来对计算机中的各种文件进行增删改查的操作 --- I/O(Input/Output)
操作文件
1.打开文件
2.操作文件(读,写),保存
3.关闭文件
open(file)
file 要打开的文件
file_name = 'demo.txt'
file_obj = open(file_name)
print(file_obj) #<_io.textiowrapper name="demo.txt" mode="r" encoding="cp936">
这种方式只能打开当前目录下的文件,如果文件在别的目录下打开就会报错
如果访问的文件不在当前目录下,只需把文件的目录copy然后复制过来即可,前面加r
file_name =r'D:\py_Project\基础\15\demo.txt'
file_obj = open(file_name)
print(file_obj) #<_io.textiowrapper name="D:\\py_Project\\基础\\15\\demo.txt" mode="r" encoding="cp936">
---------------------------------------------------------------------------看完3.关闭文件后看------------------------------------------------------------------------------
打开文件不指定操作默认是读取文件
如果有其他操作,应该在打开文件时就制定你要进行的操作
如我想向文件中写入
with open(file_name,'w',encoding='utf-8') as file_obj:
2.读取内容
2.1read() 读取文件内容,把读取内容以字符串的方式返回
demo2.txt中的内容:
清明时节雨纷纷,
路上行人欲断魂。
借问酒家何处有,
牧童遥指杏花村。
file_name = 'demo.txt'
file_obj = open(file_name)
content = file_obj.read()
print(content) # asdasdasdasdasdasd
文件读取编码格式错误:
file_name = 'demo2.txt'
try:
with open(file_name) as file_obj:
content = file_obj.read()
print(content)
except FileNotFoundError:
print(f'{file_name}不存在')
# UnicodeDecodeError: 'gbk' codec can't decode byte 0x89 in position 67: illegal multibyte sequence
调用open()来打开一个文件的时候 ,可以将文件分为两种类型
第一种 是纯文本(使用utf-8等编写的文本)
第二种 是二进制文件(音频,视频,图片......)
open()函数它默认打开文件是以纯文本的形式来打开文件
2.2更换编码格式enconding =
英文的纯文本是可以解析的,而中文的不能,所以我们指定一个适合中文的编码格式
file_name = 'demo2.txt'
try:
with open(file_name,encoding='utf-8') as file_obj:
content = file_obj.read()
print(content)
except FileNotFoundError:
print(f'{file_name}不存在')
输出:
清明时节雨纷纷,
路上行人欲断魂。
借问酒家何处有,
牧童遥指杏花村。
2.3 较大文件的读取方法
read()来读取内容的时候
它会直接将全部内容读取出来,如果尧都区的内容比较大,会一次性加载到内存当中,这个时候就容易导致内存溢出
read()可以接收一个size作为参数,该参数用来指定取字符的数量
默认值为-1 读取全部内容
可以为size指定一个值,这样我们会读取指定数量的字符
每一次读取的位置都是从上一次读取的位置接着读取
如果设置的这个size大于剩余字符的数量,它会一下把剩余的部分读取
file_name = 'demo2.txt'
try:
with open(file_name,encoding='utf-8') as file_obj:
# help(file_obj.read)
content = file_obj.read(9)
print(content)
except FileNotFoundError:
print(f'{file_name}不存在')
# 清明时节雨纷纷,
file_name = 'demo2.txt'
try:
with open(file_name,encoding='utf-8') as file_obj:
# help(file_obj.read)
content = file_obj.read(9)
content = file_obj.read(9)
content = file_obj.read(9)
content = file_obj.read(9)
print(content)
print(len(content))
except FileNotFoundError:
print(f'{file_name}不存在')
# 牧童遥指杏花村。
# 8
循环读取,设定size
file_name = 'demo2.txt'
try:
with open(file_name,encoding='utf-8') as file_obj:
# 定义一个变量,来指定每次读取字符的数量(每次读100歌字符)
chunk = 100
# 创建一个循环来读取文件内容
while True:
content = file_obj.read(chunk)
# 退出循环
if not content:
# 内容读完了,结束循环
break
print(content,end='')
except FileNotFoundError:
print(f'{file_name}不存在')
输出:(文字有点少体现不出来 ,反正是这个意思)
清明时节雨纷纷,
路上行人欲断魂。
借问酒家何处有,
牧童遥指杏花村。
2.4其他的读取方式
readline()读取一行内容
file_name = 'demo2.txt'
with open(file_name,encoding='utf-8') as file_obj:
# file_obj.readline()该方法读取一行的内容
print(file_obj.readline(),end='')
print(file_obj.readline(),end='')
输出:
清明时节雨纷纷,
路上行人欲断魂。
readlines()将读取内容放到一个列表中返回 (多了一个s)
file_name = 'demo2.txt'
with open(file_name,encoding='utf-8') as file_obj:
# file_obj.readline()该方法读取一行的内容
r = file_obj.readlines()
print(r) #['清明时节雨纷纷,\n', '路上行人欲断魂。\n', '借问酒家何处有,\n', '牧童遥指杏花村。']
3.关闭文件 close()
file_name = 'demo.txt'
file_obj = open(file_name)
content = file_obj.read()
print(content) # asdasdasdasdasdasd
# 关闭文件
file_obj.close() # 关闭文件
file_obj.read() # 文件关闭了就不能读取了,所以出现异常
with...as语句:
file_name = 'demo.txt'
with open(file_name) as file_obj:
print(file_obj.read()) # asdasdasdasdasdasd
一旦with.....as 语句结束文件自动关闭
file_name = 'asd.txt'
try:
with open(file_name) as file_obj:
print(file_obj.read())
except FileNotFoundError:
print(f'{file_name}不存在') # asd.txt不存在
4.文件的写入
4.1 write()向文件中写内容 open()中要写入参数'w'
file_name = 'demo2.txt'
with open(file_name,'w',encoding='utf-8') as file_obj:
#write()来向文件中写内容
file_obj.write('haohaoxuexi')
w表示可写的,如果文件不存在,他会帮我们来创建一个文件,并写入内容。
如果文件存在,则会覆盖原文件内容
必须写入字符串
file_name = 'demo2.txt'
with open(file_name,'w',encoding='utf-8') as file_obj:
#write()来向文件中写内容
file_obj.write('haohaoxuexi')
file_obj.write('hasd')
file_obj.write('h123')
write()是有返回值的,返回值是写入字符的个数
file_name = 'demo2.txt'
with open(file_name,'w',encoding='utf-8') as file_obj:
#write()来向文件中写内容
r = file_obj.write(str(123)+'\n')
print(r) # 4
a表示追加内容
file_name = 'demo2.txt'
with open(file_name,'a',encoding='utf-8') as file_obj:
#write()来向文件中写内容
file_obj.write('haohaoxuexi')
file_obj.write('hasd')
file_obj.write('h123\n')
运行了四次程序 demo2.txt中如下:
x用来新建文件,如果文件不存在就创建文件,文件存在就报错
5.操作二进制文件
b 二进制
读取一个mp3文件
file_name = r'C:\Users\xxx\Desktop\Tule,Chris Linton - Fearless Pt. II.mp3'
with open(file_name,'rb') as file_obj:
print(file_obj.read(40))
#b'ID3\x03\x00\x00\x00\x0bx\x00TPE1\x00\x00\x00\x13\x00\x00\x00Tule/Chris Linton\x00T'
b是python文件二进制打开,Python核心编程16 ----- 文件的打开(读取),修改,关闭,二进制...相关推荐
- Python核心编程16 ----- 文件的打开(读取),修改,关闭,二进制
ctrl + 左键点击 进入模块 1.文件打开 文件(file) 通过Python程序来对计算机中的各种文件进行增删改查的操作 --- I/O(Input/Output) 操作文件 1.打开文件 2. ...
- Windows 核心编程研究系列之二 读取指定物理内存地址中的内容
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! [原创/ ...
- Python学习之旅(核心编程基础篇003运算符)
Python学习之旅 Python核心编程基础篇2020.12.18 一.算数运算符 二.比较运算符 三.赋值运算符 四.逻辑运算符 五.成员运算符 六.身份运算符 七.三目运算符 八.运算符优先级 ...
- 核心编程9 文件和文件的输入输出 (os模块)
1 python内建函数open和file 文件打开方便读取:f = open('文件名','模式','缓冲模式') #'r'读取,'w'写入(先清空后创建).'a'追加 详情文件模 ...
- c++ ifstream 文件不结束_C++核心编程 第十二节 文件操作
前言:程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放.通过文件可以将数据持久化. C++中对文件操作需要包含头文件 ,C++中操作文件有不同的文件打开方式,具体见下表所示. 文件打开方 ...
- 【黑马程序员 C++教程从0到1入门编程】【笔记6】C++核心编程(文件操作)
文章目录 5 文件操作 5.1文本文件 5.1.1写文件 5.1.2读文件 5.2 二进制文件 5.2.1 写文件(用二进制方式写时最好别用c++的string) 5.2.2 读文件 https:// ...
- C++核心编程(11)--文件操作
目录 11 文件操作 11.1文本文件 11.1.1写文件 11.1.2读文件 11.2 二进制文件 11.2.1 写文件 11.2.2 读文件 11 文件操作 程序运行时产生的数据都属于临时数据,程 ...
- Python核心编程06-----列表 切片 常用操作 修改列表 列表的方法 遍历列表
目录 1. 序列(sequence) 1.1 基本概念 1.2 序列的分类 2. 列表(list) 2.1 列表的使用 2.2 切片 3.通用操作 4.修改列表 5.列表的方法 6.遍历列表 6.1f ...
- linux 读取文件夹命令,Linux系统编程_1_文件夹读取(实现简单ls命令)
闲来无事.随便写写,实现简单的ls命令: | 1 #include | 2 #include | 3 #include | 4 #include | 5 | 6 int main(int argc, ...
最新文章
- java如何画周期sanjiao信号_如何声明一个可变长度的std_logic_vector信号
- 俄罗斯、乌克兰程序员薪资大曝光!年薪普遍 15w+,女程序员比男程序员收入高?...
- [Node.js]常用工具
- python习题:写一个备份数据库的脚本
- swift 简单语句 控制流语句
- Error creating bean with name ‘redisConnectionFactory‘ defined in class path resource
- 开放,从容不凡,携手迈进容器应用时代 ——2020容器云职业技能大赛正式开赛
- spring bean
- 用CPU计时器统计CUDA核函数的运行时间
- idea创建Maven项目后启动报404
- LINUX使用sig文件验证文件的签名
- 我对 SRE 的理解
- linux思源黑体乱码,deepin终端使用思源黑体做中文字体
- STC-ISP下载编程烧录软件绿色版(单片机必备)下载
- TAGE Predictor
- Don't Starve,好脚本,好欢乐
- 热血传奇之周星弛[转载]【出处:未知】
- Canvas制作RPG手机版游戏(一):
- 九州计算机入职培训总结,【精华】银行培训心得体会四篇
- 计算机与经济专业前景,2020经济管理专业就业前景和就业方向分析
热门文章
- Java项目:基于SSM的疫情物业系统
- 阿里云轻量和云服务器ECS区别对比大全(很详细)
- 如何利用excel计算百分位
- 面向高稳定,高性能之-Hbase数据实时同步到ElasticSearch(之二)
- C++ 学习——char * ,char a[ ],char ** ,char *a[] 的区别
- 【C语言】设计实现M*N矩阵和N*M矩阵相乘
- OpenAI亲谈:我们眼中的GPT-3、大规模语言模型的局限性与出路在哪
- Pycharm设置http代理
- 串联电阻和并联电阻的计算方法
- 剑麻的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告