Python文件操作-程序员宅基地

技术标签: 软件测试Python  python  

文件介绍

1. 计算机只认识二进制 ( 0 1 )
2. ⽂件中存储的数据都是以二进制 ( 0 1 ) 的形式去存储的
文件分为两种: ⽂本⽂件和二进制⽂件

文本文件

能够使⽤记事本软件打开 ( 能够使⽤记事本转换为⽂字 )

txt, md, py , html, css, js , json

二进制文件

不能使⽤记事本软件打开的
exe, mp3, mp4, jpg, png

文件操作

打开文件

语法:open(file, mode='r', encoding=None)

参数 file:将要打开的文件,字符串类型,相对路径或绝对路径

参数mode:默认参数(缺省参数), 表示的是打开文件的⽅式

                     r: read 只读打开

                     w: write 只写打开

                      a:append 追加打开 , 在⽂件的末尾写⼊内容
参数encoding:编码方式,文字或二进制
                           gbk: 将⼀个汉字转换为 2 个字节⼆进制
                            utf-8: 常⽤ , 将⼀个汉字转换为 3 个字节的⼆进制
返回值 : 返回的是⽂件对象 , 后续对⽂件的操作 , 都需要这个对象读写文件

读写文件

写文件

对象 . write ( ' 写⼊⽂件的内容 ' )
# 1, 打开⽂件
f = open('123.txt', 'w', encoding='utf-8')
# 2, 写⽂件
f.write('天天开心\n')
f.write('天天快乐')
# 3, 关闭⽂件
f.close()

读文件   

对象. read ( n )

​​​参数n:表示读取多少字符,空代表读取全部内容

#读文件
# 1, 打开⽂件
f = open('123.txt', 'r', encoding='utf-8')
# 2, 读⽂件
aaa = f.read()
print(aaa) # ⽬前只是打印读取的内容,可以做其它的事
# 3. 关闭⽂件
f.close()
# r ⽅式打开⽂件 ,如果⽂件不存在,代码会报错

关闭文件

⽂件对象.close()

使⽤ with open 打开⽂件

with open () 打开⽂件的好处 : 不⽤⾃⼰去书写关闭⽂件的代
码, 会⾃动进⾏关闭
with open('123.txt','a',encoding='utf-8') as f:
    f.write('woshi dage ')

按行读取文件内容

按⾏读取⽂件: ⼀次读取⼀⾏内容
⽂件对象 . readline ()
with open('123.txt', 'r',encoding='utf-8') as f:
    while True:
        buf = f.readline()
        if len(buf) == 0:
            break
        else:
         print(buf, end='')
with open('123.txt', 'r', encoding='utf-8') as f:
     for i in f:
      print(i, end='')

json文件的处理

json 的介绍

json
基于⽂本,独⽴于语⾔的轻量级的数据交换格式
- 基于⽂本, 是⼀个⽂本⽂件, 不能包含图⽚,⾳视频等
- 独⽴于语⾔, 不是某个语⾔特有的, 每种编程语⾔都可以使⽤
- 轻量级, 相同的数据, 和其他格式相⽐,占⽤的⼤⼩⽐较⼩
- 数据交换格式, 后端程 序员 给前端的数据 ( json html,xml )

json 文件的语法

1. json ⽂件的后缀是 . json
2. json 中主要数据类型为 对象({} 类似 Python 中 字典)
和 数组([], 类似 Python 中的列表), 对象和 数组可以互相嵌套
3. ⼀个json ⽂件是⼀个 对象或者数组(即 json ⽂件的最外层要么是⼀个 {}, 要么是⼀个 数组 [])
4. json 中的对象是由键值对组成的, 每个数据之间使⽤逗号隔开,但是最后⼀个数据后边不要写逗号
5. json 中的字符串 必须使⽤ 双引号
6. json 中的其他数据类型
> 数字类型 ----> int float
> 字符串 string ---> str
> 布尔类型 true , false -----> True , False
> 空类型 null ----> None
{
  "name": "小明",
  "age": 18,
  "isMen": true,
 "like": [
 "听歌",
 "游戏",
 "购物",
 "吃饭",
 "睡觉",
 "打⾖⾖"
 ],
 "address": {
 "country": "中国",
 "city": "上海"
 }
}

读取 json 文

导包 import json
读打开⽂件
读⽂件
json . load ( ⽂件对象 )
# 返回的是 字典(⽂件中是对象)或者列表(⽂件中是数组)
import json
with open ('info.json',encoding='utf-8')as f:
    # buf = f.read()
    # print(buf)
    result = json.load(f)
    print(type(result))
    print(result.get('name'))
    print(result.get('age'))
    print(result.get('address').get('city'))

json 的写入

⽂件对象.write(字符串) 不能直接将 Python 的列表 和字典
作为参数传递
想要将 Python 中的数据类型存为 json ⽂件, 需要使⽤ json
提供的⽅法, 不再使⽤ write
1. 导包 import json
2. ( w ) ⽅式打开⽂件
3. 写⼊

json.dump(Python 中的数据类型, ⽂件对象)


import json

my_list = [('admin', '123456', '登录成功'), ('root','123456', '登录失败'), ('admin', '123123', '登录失败')]
with open('info3.json','w',encoding='utf-8') as f:
 json.dump(my_list,f,ensure_ascii=False,indent=4)#直接显示中⽂,不以 ASCII 的⽅式显示,显示缩进

 异常

程序在运⾏时,如果 Python 解释器 遇到到⼀个错误,会停⽌程序的执⾏,并且提示⼀些错误信息,这就是异常
程序停⽌执⾏并且提示错误信息 这个动作, 抛出异常(raise 关键字)
捕获异常: 程序遇到异常, 默认动作是终⽌代码程序的执⾏, 遇⻅异常之后, 可以使⽤异常捕获,让程序代码继续运⾏,不会终 ⽌运⾏(重点)

基本语法

try :
书写可能发⽣异常的代码
except : # 任何类型的异常都能捕获
发⽣了异常执⾏的代码
try :
书写可能发⽣异常的代码
except 异常类型 : # 只能捕获指定类型的异常 , 如果不是这个
异常 , 还是会报错
发⽣了异常执⾏的代码

异常捕获

try:
    num = input('请输⼊数字:')
    num = int(num)
    print(num)
except:
    print('请输⼊正确的数字')
捕获ValueError类型及其子类的异常
try:
    num = input('请输⼊数字:')
    num = int(num)
    print(num)
except ValueError:
    print('请输⼊正确的数字')

捕获多个指定类型的异常

好处: 可以针对不同的异常错误,进⾏单独的代码处理

try :
书写可能发⽣异常的代码
except 异常类型 1 : # 只能捕获指定类型的异常 , 如果不是这
个异常 , 还是会报错
发⽣了异常 1 执⾏的代码
except 异常类型 2 :
发⽣了异常 2 执⾏的代码
except 异常类型 ...:
发⽣了异常 ... 执⾏的代码
#多个异常的捕获
try:
    #1. 获取⽤户从键盘输⼊的数据
    num = input('请输⼊数字:')
    # 2. 转换数据类型为整数
    num = int(num)
    # 3. 输出转换之后的数据内容
    print(num)
    a = 10 / num  # 10 / 0
    print(f'a: {a}')
except ValueError:  # 只能捕获 ValueError 类型及其⼦类的异常
    print('发⽣了异常, 请输⼊正确的数字...')
except ZeroDivisionError:
    print('除数不能为 0')

异常捕获

try :
        可能发⽣异常的代码
except 异常类型 1 :
        发⽣异常类型1 执⾏的代码
# Exception 是常⻅异常类的⽗类 , 这⾥书写 Exception,
以捕获常⻅的所有⼀会 , as 变量 , 这个变量是⼀个异常类的对
, print( 变量 ) 可以打印异常信息
except Exception as 变量 :
        发⽣其他类型的异常 , 执⾏的代码
else :
        没有发⽣异常会执⾏的代码
finally :
        不管有没有发⽣异常 , 都会执⾏的代码
try:
    num = input('请输入数字:')
    num = int(num)
    print(num)
    a = 10/num
    print(f'a:{a}')
except Exception as e:
    print(f'错误信息为:{e}')
else:
    print('没有异常')
finally:
    print('我一定会执行')

来源:黑马软件测试Python

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_69514393/article/details/137594893

智能推荐

Linux驱动开发: USB驱动开发_linux usb 通信从设备开发-程序员宅基地

文章浏览阅读7k次,点赞86次,收藏192次。一、USB简介1.1 什么是USB? USB是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等信息通讯产品,USB就是简写,中文叫通用串行总线。最早出现在1995年,伴随着奔腾机发展而来。自微软在Windows 98中加入对USB接口的支持后,USB接口才推广开来,USB设备也日渐增多,如数码相机、摄像头、扫描仪、游戏杆、打印机、键盘、鼠标等等,其中应用最广的就是摄像头和U盘了。 USB包括老旧的USB 1.1标准..._linux usb 通信从设备开发

Qt知识点梳理 —— 代码实现菜单栏工具栏-程序员宅基地

文章浏览阅读379次,点赞5次,收藏9次。在清楚了各个大厂的面试重点之后,就能很好的提高你刷题以及面试准备的效率,接下来小编也为大家准备了最新的互联网大厂资料。《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!家准备了最新的互联网大厂资料。[外链图片转存中…(img-VMQDYeXz-1712056340129)][外链图片转存中…(img-JqBcGpUE-1712056340130)][外链图片转存中…(img-7Rrt8dF9-1712056340130)]

《设计模式入门》 9.代理模式_cglib需要引入第三方包-程序员宅基地

文章浏览阅读448次。代理模式可以说是我们在java学习中非常常见的一个设计模式了,在很多地方我们都可以看到代理模式的影子。比如:Spring 的 Proxy 模式(AOP编程 )AOP的底层机制就是动态代理 mybatis中执行sql时mybatis会为mapper接口通过jdk动态代理的方法生成接口的实现类 Feign对于加了@FeignClient 注解的类会在Feign启动时,为其创建一个本地JDK Proxy代理实例,并注册到Spring IOC容器可以看出,代理模式就是给..._cglib需要引入第三方包

前端开发:JS中向对象中添加对象的方法_一个对象如何添加另一个对象-程序员宅基地

文章浏览阅读1w次,点赞2次,收藏6次。在前端开发过程中,一切皆对象,尤其是在数据处理的时候,大部分时候也是处理对象相关的数据,所以对象在JS中是很重要的一个内容,也是必用的内容。本篇博文来分享一下关于在JS中对象里面添加对象的操作,虽然知识点不难,但是常用,所以总结一下存起来,方便查阅使用。通过本文的介绍,关于在JS中对象里面添加对象的操作就得心应手了,虽然该知识点不难但是重要和常用,尤其是对于刚接触前端开发不久的开发者来说更是如此,所以绝对掌握该知识点还是很有必要的,重要性不再赘述。欢迎关注,共同进步。_一个对象如何添加另一个对象

迁移学习在自然语言生成中的研究-程序员宅基地

文章浏览阅读257次,点赞3次,收藏8次。1.背景介绍自然语言生成(Natural Language Generation, NLG)是一种将计算机理解的结构化信息转换为自然语言文本的技术。自然语言生成可以用于多种应用,如机器翻译、文本摘要、对话系统等。随着深度学习技术的发展,自然语言生成的表现力得到了显著提高。迁移学习(Transfer Learning)是一种机器学习技术,它可以将在一个任务上学到的知识应用于另一个相关任务。在...

随便推点

SpringBoot引入第三方jar包或本地jar包的处理方式_springboot idea 直接启动 target 第三方 jar 包-程序员宅基地

文章浏览阅读262次。在开发过程中有时会用到maven仓库里没有的jar包或者本地的jar包,这时没办法通过pom直接引入,那么该怎么解决呢一般有两种方法第一种是将本地jar包安装在本地maven库 第二种是将本地jar包放入项目目录中这篇文章主要讲第二种方式,这又分两种情况,一种是打包jar包,第二种是打包war包jar包 先看看jar包的结构 用压缩工具打开一个jar包 打包后jar包的路径在BOOT-INF\lib目录下 ..._springboot idea 直接启动 target 第三方 jar 包

软件压力测试图片60张,Win10 64位用鲁大师界面cpu温度60上下,显卡40多。用压力测试7-8分钟cpu75左右,...-程序员宅基地

文章浏览阅读1.4k次。CPU正常情况下45-65℃或更低,夏天或者玩游戏时,温度会高点,不超过80都属于正常温度。高于80℃时,需要采取措施:要检查CPU和风扇间的散热硅脂是否失效;更换CPU风扇;给风扇除尘;在通风或者空调间中使用机器。显卡温度:显卡一般是整个机箱里温度最高的硬件,常规下50-70℃(或更低),运行大型3D游戏或播放高清视频的时候,温度可达到100℃左右,一般高负载下不超过110℃均视为正常范畴。如有..._windows cpu gpu 压测

Mac系统制作U盘安装盘,不能识别U盘的情况_making disk bootable不动-程序员宅基地

文章浏览阅读2.3w次,点赞2次,收藏5次。遇到的问题:OS10.12系统,使用Mac系统自带的磁盘工具,通过恢复来制作的U盘安装盘,开机按住option键,没有U盘的这个选项。原因:使用磁盘工具恢复,没有创建启动文件,使用命令行能创建。U盘抹掉,分区名为1。sudo /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstal_making disk bootable不动

LOJ6089 小Y的背包计数问题 背包、根号分治-程序员宅基地

文章浏览阅读129次。题目传送门题意:给出$N$表示背包容量,且会给出$N$种物品,第$i$个物品大小为$i$,数量也为$i$,求装满这个背包的方案数,对$23333333$取模。$N \leq 10^5$$23333333=17 \times 1372549$竟然不是质数性质太不优秀了(雾直接跑背包$O(N^2)$,于是咱们考虑挖掘性质、分开计算发现当$i < \sqrt{N}$时就是一个多..._背包 根号

验证码-程序员宅基地

文章浏览阅读110次。用.net实现网站验证码功能 收藏 一、验证码简介验证码功能一般是用于防止批量注册的,不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术。所谓验证码,就是将一串随机产生的数字或字母或符号或文字,生成一幅图片, 图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。常见的验证码有如下几种: 1、纯..._验证码的样本标签,是5个字符,每个字符的可能 取值范围是'0'~'9'、'a'~'z'共36

ImportError: undefined symbol: cudaSetupArgument_undefinded symbol: cudasetupargument-程序员宅基地

文章浏览阅读2.7k次,点赞2次,收藏3次。ImportError: undefined symbol: cudaSetupArgumentubuntu16.04How to solve?Step1.pip install -U torchvision==0.4.0链接: link.Step2.Problem:ImportError: cannot import name ‘PILLOW_VERSION’ from ‘PI..._undefinded symbol: cudasetupargument