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

智能推荐

java 字符串包含_java判断字符串包含某个字符的实例方法-程序员宅基地

文章浏览阅读1.4w次,点赞4次,收藏5次。java判断字符串是否包含某个字符的方法:一、contains方法1:描述java.lang.String.contains() 方法返回true,当且仅当此字符串包含指定的char值序列2:声明public boolean contains(CharSequence s)3:返回值如果此字符串包含返回true,否则返回false。4:实例public static void main(Strin..._java 字符串包含

jquery学习记录_"使用$(\"p\").addclass(\"p1,p2\")可以为所有段落元素同时添加p1和p2两-程序员宅基地

文章浏览阅读410次,点赞2次,收藏6次。什么是jQuery? jQuery是一个快速,小巧,功能丰富的JavaScript库。它通过易于使用的API在大量浏览器中运行,使得HTML文档遍历和操作,事件处理,动画和Ajax变得更加简单。通过多功能性和可扩展性的结合,jQuery改变了数百万人编写JavaScript的方式。..._"使用$(\"p\").addclass(\"p1,p2\")可以为所有段落元素同时添加p1和p2两个类"

hibernate连接多个数据库_winform hibernate-configuration 项目加载多个数据库-程序员宅基地

文章浏览阅读5.2k次。本文转自自http://blog.sina.com.cn/s/blog_49bf8585010004m6.html一、 Hibernate访问数据库时加载的过程对于大多数使用Hibernate的朋友来说,通常使用一下方式来获得Configuration实例: Configuration configure = new Configuration()._winform hibernate-configuration 项目加载多个数据库

ANR理解_anr wait 类型-程序员宅基地

文章浏览阅读467次。1)什么引发了ANR?在Android里,应用程序的响应性是由Activity Manager和WindowManager系统服务监视的。当它监测到以下情况中的一个时,Android就会针对特定的应用程序显示ANR:在5秒内没有响应输入的事件(例如,按键按下,屏幕触摸)BroadcastReceiver在10秒内没有执行完毕一个ANR对话框显示给用户2)如何避免ANR?考虑上面的ANR定义,让我们_anr wait 类型

Android 开发必备知识点及面试题汇总(Android+Java+算法+性能优化+四大组件-程序员宅基地

文章浏览阅读752次,点赞15次,收藏16次。AsyncTask 内部也是 Handler 机制来完成的,只不过 Android 提供了执行框架来提供线程池来执行相应地任务,因为线程池的大小问题,所以 AsyncTask 只应该用来执行耗时时间较短的任务,比如 HTTP 请求,大规模的下载和数据库的更改不适用于 AsyncTask,因为会导致线程池堵塞,没有线程来执行其他的任务,导致的情形是会发生 AsyncTask 根本执行不了的问题。网络相关1.指定的LayoutParams。

LAMP自动化安装脚本更新(添加了mcrypt)-程序员宅基地

文章浏览阅读57次。之前的脚本没有添加mcrypt,本次添加了mcrypt,在安装这个东西的时候,遇到两个问题,所幸都解决了。已在脚本中做了标注! Mark......#!/bin/bash #Thisscriptisusedtoautoinstalllamp. #createbycheng #mail:[email protected] #blog:http://m...

随便推点

XSS笔记_<img src=x 慰nerr慰r=alert(1)>-程序员宅基地

文章浏览阅读230次。XSS的原理用户提交的数据没有过滤,或者过滤不严格,输出到网页中,导致可以构造执行JS代码,或者修改网页内容。XSS的危害盗取用户或管理员的CookieXSS Worm挂马(水坑攻击)有局限性的键盘记录 等等XSS的分类反射型XSS存储型XSSDOM XSSFlash XSS存储型XSS又称为持久型XSS,他和反射型XSS最大的不同就是,攻击脚本将被永久的存放在目标服务器的数据库或文件中。DOM XSSDOM XSS与反射型XSS和存储型XSS的差别是在于DOM XSS的代码不_

X3 PI双风扇散热外壳开源(可自行下载3D打印)_哪里有开源外壳-程序员宅基地

文章浏览阅读224次。地平线旭日X3派外壳CNC工艺设计_哪里有开源外壳

固定docker容器IP方法_docker 容器固定ip-程序员宅基地

文章浏览阅读6.6k次,点赞2次,收藏14次。docker默认有4种网络模式,详细查曾经写的 "docker几种网络模式"docker run 新建并启动容器时,不指定网络默认,默认是使用桥接模式,容器内部IP是通过DHCP获取,docker容器重启后,其容器IP会变化。有没有办法来固定容器内的IP呢?答案是肯定的。可以使用脚本或工具来固定容器内部IP。一、如何查看容器内部IP?:方法一:通过docker inspect查看容器的详细信息来查看,可以使用grep来匹配查询[root@localhost ~]# docker in._docker 容器固定ip

XPC调试记录 :TwinCAT生成XML配置文件_twincat xae new device type found.-程序员宅基地

文章浏览阅读3.8k次。XPC调试记录:生成XML配置文件202103161.连接目标控制器硬件准备:用一根网线将配置有EtherCAT的电脑和EK1100(BECOHOFF总线模块)网线插槽X2(OUT)相连。(正常初始化配置时对应指示灯闪烁)(1)打开 TwinCAT3,点击 New TwinCAT Project 或 FILE 中的新建(2)选择 TwinCAT Project 中的 TwinCAT XAE Project(XML format),并把名字改成英文,例如下图中 TwinCAT Project1,还有别_twincat xae new device type found.

多商家点餐小程序源码_多商户点餐系统源码-程序员宅基地

文章浏览阅读722次。大等于jdk1.8,大于mysql5.5,idea(eclipse),微信开发者工具。代码注释齐全,没有多余代码,适合学习(毕设),二次开发,包含论文技术相关文档。统计分析:查看用户,菜品,订单数量;统计分析:查看用户,菜品,订单数量;个人中心显示我的信息(可编辑),我的地址(增删改)订单展示订单信息(包含取消,支付,完成,评价)该系统分为三个角色:用户,商家,管理员。订单管理:显示用户下单信息,以及发货。用户管理:查看注册用户信息,及删除。评价管理:查看用户评价,及删除。店铺管理:店铺信息增删改查。_多商户点餐系统源码

Git GUI Here 设置成中文界面_git gui here有中文吗-程序员宅基地

文章浏览阅读2.7k次。Git GUI Here 设置成中文界面在使用git管理项目时,部分用户可能会用到,git可视化工具"Git GUI Here" 。git可视化工具"Git GUI Here"默认时英文展示,那么如何将“Git GUI Here”设置成中文界面呢!其实非常简单,只需要在git安装目录Git\mingw64\share\git-gui\lib下放上中文语言包,Git GUI Here就会自动显示中文了。注:本人git安装目录为(D:\git\Git\mingw64\share\git-gui\lib)_git gui here有中文吗

推荐文章

热门文章

相关标签