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 ----- 文件的打开(读取),修改,关闭,二进制...相关推荐

  1. Python核心编程16 ----- 文件的打开(读取),修改,关闭,二进制

    ctrl + 左键点击 进入模块 1.文件打开 文件(file) 通过Python程序来对计算机中的各种文件进行增删改查的操作 --- I/O(Input/Output) 操作文件 1.打开文件 2. ...

  2. Windows 核心编程研究系列之二 读取指定物理内存地址中的内容

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! [原创/ ...

  3. Python学习之旅(核心编程基础篇003运算符)

    Python学习之旅 Python核心编程基础篇2020.12.18 一.算数运算符 二.比较运算符 三.赋值运算符 四.逻辑运算符 五.成员运算符 六.身份运算符 七.三目运算符 八.运算符优先级 ...

  4. 核心编程9 文件和文件的输入输出 (os模块)

    1  python内建函数open和file 文件打开方便读取:f = open('文件名','模式','缓冲模式')         #'r'读取,'w'写入(先清空后创建).'a'追加 详情文件模 ...

  5. c++ ifstream 文件不结束_C++核心编程 第十二节 文件操作

    前言:程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放.通过文件可以将数据持久化. C++中对文件操作需要包含头文件 ,C++中操作文件有不同的文件打开方式,具体见下表所示. 文件打开方 ...

  6. 【黑马程序员 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:// ...

  7. C++核心编程(11)--文件操作

    目录 11 文件操作 11.1文本文件 11.1.1写文件 11.1.2读文件 11.2 二进制文件 11.2.1 写文件 11.2.2 读文件 11 文件操作 程序运行时产生的数据都属于临时数据,程 ...

  8. Python核心编程06-----列表 切片 常用操作 修改列表 列表的方法 遍历列表

    目录 1. 序列(sequence) 1.1 基本概念 1.2 序列的分类 2. 列表(list) 2.1 列表的使用 2.2 切片 3.通用操作 4.修改列表 5.列表的方法 6.遍历列表 6.1f ...

  9. linux 读取文件夹命令,Linux系统编程_1_文件夹读取(实现简单ls命令)

    闲来无事.随便写写,实现简单的ls命令: | 1 #include | 2 #include | 3 #include | 4 #include | 5 | 6 int main(int argc, ...

最新文章

  1. java如何画周期sanjiao信号_如何声明一个可变长度的std_logic_vector信号
  2. 俄罗斯、乌克兰程序员薪资大曝光!年薪普遍 15w+,女程序员比男程序员收入高?...
  3. [Node.js]常用工具
  4. python习题:写一个备份数据库的脚本
  5. swift 简单语句 控制流语句
  6. Error creating bean with name ‘redisConnectionFactory‘ defined in class path resource
  7. 开放,从容不凡,携手迈进容器应用时代 ——2020容器云职业技能大赛正式开赛
  8. spring bean
  9. 用CPU计时器统计CUDA核函数的运行时间
  10. idea创建Maven项目后启动报404
  11. LINUX使用sig文件验证文件的签名
  12. 我对 SRE 的理解
  13. linux思源黑体乱码,deepin终端使用思源黑体做中文字体
  14. STC-ISP下载编程烧录软件绿色版(单片机必备)下载
  15. TAGE Predictor
  16. Don't Starve,好脚本,好欢乐
  17. 热血传奇之周星弛[转载]【出处:未知】
  18. Canvas制作RPG手机版游戏(一):
  19. 九州计算机入职培训总结,【精华】银行培训心得体会四篇
  20. 计算机与经济专业前景,2020经济管理专业就业前景和就业方向分析

热门文章

  1. Java项目:基于SSM的疫情物业系统
  2. 阿里云轻量和云服务器ECS区别对比大全(很详细)
  3. 如何利用excel计算百分位
  4. 面向高稳定,高性能之-Hbase数据实时同步到ElasticSearch(之二)
  5. C++ 学习——char * ,char a[ ],char ** ,char *a[] 的区别
  6. 【C语言】设计实现M*N矩阵和N*M矩阵相乘
  7. OpenAI亲谈:我们眼中的GPT-3、大规模语言模型的局限性与出路在哪
  8. Pycharm设置http代理
  9. 串联电阻和并联电阻的计算方法
  10. 剑麻的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告