一、文件操作
1.什么是模块?---->一个.py文件就是一个模块
2.import:可以通过import关键字导入其他模块
3.怎么使用模块中的内容?什么内容可以使用?
import 模块名-------->导入模块中的整个内容
以 模块名.的方式去使用模块中的内容
import other:
导入一个模块,这个模块名字叫other,在执行import other的时候,other里面所包括的内容都会被执行一遍,相当于复制other2里面的内容粘贴到这里
4.from 模块 import 内容1,内容2....
直接从模块中导入需要使用的内容,该方法的好处是在使用内容的时候不需要再加模块名
5.阻止被导入的模块中的不必要的代码被粘贴到当前模块,一般情况下除了函数和类的声明以外,其他的代码都放到if里面,格式如下:
if _ name _= _ main :------写在这个里面的代码在被其他文件的导入时候不会被执行
原因如下:因为每一个文件都有一个名字属性,这个属性只有在该文件被直接运行的时候才会被系统强制转换成 main _,如果文件不是被直接执行的话,if条件不会成立,那么下面的代码就不会被执行,就是这样,哦耶!
6.使用as重命名
import 模块名 as 新的名字
from 模块名 import 函数名 as 新的函数名
**总结:1、import 模块名
模块名.内容
2、from 模块名 import 内容
3、import 模块名 as 自己想取的名字
4、from 模块名 import 内容 as 自己想取的名字
二、文件基本操作
(所有)文件操作流程:打开文件--->操作文件(读/写)--->关闭文件
1、打开文件:open(文件路径,打开的方式,编码方式)
文件路径(必填)---->决定打开哪个文件
文件方法(默认值是'r')---->决定打开文件后是进行什么操作(默认是打开读)
'r'(read)----读操作(读出来的字符串)
'rb'/'br'---读操作(读出来的数据是二进制)
'w'(write)---写操作(可以将文本数据写入文件中)
'wb'/'bw'----写操作(可以将二进制数据写入文件中)
r----read w----write b----byte
rb/br-----读二进制
wb/bw-----写二进制
'a'-----追加
2、文本文件读操作
1、打开文件(要用变量保存)(r,br/rb)----加上b是读取二进制代码
a.放在工程外面的文件,写绝对路径:
b.将文件放到工程目录下的某个位置,写相对路径(相对于工程目录):./相对路径 或者 ../相对路径
当你的py文件直接放在工程目录下,想要使用open打开工程中的其他文件使用'./'
当py文件在工程目录的子目录下面,想要使用open打开工程中的其他文件使用'../'
当读取二进制码的时候,不能加encoding='utf-8'
f = open('./test1.txt','rb')
content = f.read()
print(content)
结果:b'\xe5\x8f\xa4\xe4\xba\xba\xe4\xbd\x95\xe6\x97\xb6\xe5\x88\x9d\xe8\xa7\x81\xe6\x9c\x88\xef\xbc\x8c\xe6\xb1\x9f\xe6\x9c\x88\xe4\xbd\x95\xe5\xb9\xb4\xe5\x88\x9d\xe7\x85\xa7\xe4\xba\xba'
2、读取文件
文件.read()------->读出来的内容也要保存
**注意:文件.read(n)------用n可以设置读取的长度,在第二次读取的时候,从上一次结束的位置开始
f = open('./test1.txt','r',encoding='utf-8')
content = f.read(2)
print(content)
content1 = f.read()
print(content1)
f.close()
结果:古人
何时初见月,江月何年初照人
3、关闭文件
文件.close()
3、文本文件写操作
注意:以读的方式打开文件,如果这个文件不存在,会报错 File Not Find Error
以写的方式打开文件,如果这个文件不存在,就会创建这个文件
1.打开文件(w,bw/wb)-----加上b是写入二进制代码
2.写操作
'w': 在写的时候会清空文件中原来的内容,然后再往里面写数据
'a':在原文件内容的基础上增加新的内容
3.关闭文件
4、二进制文件的读写操作(在读或者写的时候,必须加b)
音频、视频、图片文件,都是二进制文件
二进制文件的读操作
f = open('./美女.jpg','rb')
image_data = f.read()
print(image_data)
f.close()
结果:结果太长了
二进制文件的写操作
f = open('./美女.jpg','wb')
f.write()
f.close()
5.通过with关键字去打开文件
with open()as 文件变量名:
文件操作
在文件操作结束后会自动关闭文件
with open ('./test1.txt','r',encoding='utf-8') as ff:
content = ff.read()
print(content)
结果:可怜金玉质,终陷淖泥中
with open ('./美女.jpg','rb') as ff:
content = ff.read()
print(content)
三、json文件(最外层只能是字典或者列表或者字符串)
json文件(文本),就是文件后缀是.json的文件。内容必须是json格式
json格式:
1.内容是字符串(指的是json本身的内容是字符串)
2.最外层是字典,字典里面就必须是键值对
3.最外层是数组(列表),数组里面的内容必须是数组数据
json数据类型(对应python的数据类型):object --->dict array--->list
string ---->str number----->int/float true/false---->True/False
null ----->None
json文件字符串用双引号
json是python中内置的一个模块,专门用来处理json数据的
在使用json之前,首先要导入json
import json
1.json文件的读操作
import json
with open('.//.idea/test.json','r',encoding='utf-8') as f:
content = json.load(f)
print(content,type(content))
with open('.//.idea/test.json','r',encoding='utf-8') as f:
content = f.read()
print(content,type(content))
结果:[{'name': 'A', 'age': 18}, {'name': 'a', 'age': 20}] <class 'list'>
[{"name": "A", "age": 18}, {"name": "a", "age": 20}] <class 'str'>
注意:json.load(文件对象):获取指定json文件中的内容,返回值的类型是json文件中最外层的数据类型
直接使用read()去读,获取到的是字符串,包含json文件中所有的内容(包括注释部分)
2.json文件的写操作(json.dump(写的内容,文件对象)
import json
with open('.//.idea/test.json','w',encoding='utf-8') as f:
w_content = [{'name': 'A', 'age': 18}, {'name': 'a', 'age': 20}]
json.dump(w_content,f)
3.json模块的其他操作(json.loads(json格式的字符串,编码方式)
loads(字符串,编码方式)----->将指定的字符串(json格式的字符串),转换成python数据
将字符串转换成字典\将字符转化成列表
content = json.loads('["a",100,false,{"a":1,"abc":"100"}]',encoding='utf-8')
print(content,type(content))
结果:['a', 100, False, {'a': 1, 'abc': '100'}] <class 'list'>
dumps(对象)
将对象转换成json字符串
字典/列表转换成json字符串
content = json.dumps(['aaa',1,True])
print(content,type(content))
结果:["aaa", 1, true] <class 'str'>
出现异常(错误)不想让程序崩溃,就可以进行异常捕获
try:
需要捕获异常的代码
except:
出现异常会出现的代码
try:
需要捕获异常的代码
except 错误类型:
捕获到指定的错误类型,才执行的代码
作者:堪怜咏絮才
链接:https://www.jianshu.com/p/2e7eea15bff5
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。