一、模块管理函数和类
1. 什么是模块?
一个.py文件就是一个模块
2. import: 可以通过import关键字导入其他模块
import 模块名(.py文件名)
- 直接导入模块的时候相当于把被导入模块的内容粘贴到了import的位置
3. 怎么使用模块中的内容? 什么内容是可以使用的?
import 模块名
-------------------- 导入模块中的所有内容
模块名.内容 (使用模块中的内容)
- 在模块中声明的全局变量都可以使用(普通变量,函数,类)
4. 导入指定内容
from 模块 import 内容1,内容2
使用这种方式使用导入的包里面的内容时, 不用在被导入的变量,函数或类前加模块名但不可使用未导入的内容。
other.py
def f1():
print('一个模块中的函数')
num = 3
print('666,六翻了')
from other2 import f1, num
print(num)
f1()
666,六翻了
3
一个模块中的函数
5. 阻止模块中被导入模块中不必要的代码被粘贴到当前内容
other2.py
print('hello world')
if __name__ == '__main__':
test = 3.1415926
print('这条语句不能被其他程序导入执行')
def f1():
print('另一个模块中的函数')
import other2
print(test) # 这条语句会报错
只会输出不在if __name__ == '__main__':
缩进下的语句
hello world
- 一般情况除了函数的声明和类的声明以外,其他的代码都放到这个if里面
- 包含在
if __name__ == '__main__':
语句内的代码不会被其他程序导入使用 - _name_ : 是每个模块自带的属性,是用来保存当前这个模块的名字的.但是当正在执行当前这个模块的时候,这个属性的值是固定的(_main_)
6. 使用as重命名
import 模块名 as 新的名字
from 模块名 import 函数名 as 新的函数名
一些例子
import math as m
print(m.pi)
from random import randint as rand
print(rand(5, 9))
3.141592653589793
7
二、基本文件操作
(所有)文件操作流程: 打开文件 > 操作文件(读或写) > 关闭文件
1. 打开文件:
open(文件路径,打开的方式,编码方式)
- 文件路径(必填) > 决定打开哪个文件
- 打开方式(默认是'r') > 决定打开文件后进行什么样的操作
- 'r' - 读操作(读出来是字符串)
- 'rb'/'br' - 读操作(读出来的数据是二进制)
- 'w' - 写操作(可以将文本数据写入文件中)
- 'wb'/'bw' - 写操作(将二进制数据写入文件中)
- 'a' - 写操作(追加)
编码方式(主要针对文本文件) > 不同的操作系统默认的文本编码方式不同(Windows(GBK),Mac(UTF-8))
2. 文本文件读操作
a. 放在工程外面的文件,写绝对路径
open('H:\Pythonproject\day09\test.txt')
b. 将文件放到工程目录下的某个位置,写相对路径(相对工程目录):./相对路径 或者 ../相对路径。当py文件直接放在工程目录下,想要使用open打开工程中其他文件使用'../'
2.1. 打开文件,返回文件句柄(文件代言人)
f = open('./test.txt', 'r', encoding='UTF-8')
2.2. 读文件(获取文件内容)
文件.read()
: 获取文件内容并返回
read(n) ----> n
:设置读取长度
content = f.read(2)
print(content)
content = f.read()
print(content)
读文件操作会从上一次读取结束的位置继续读取
路漫
漫其修远兮,吾将上下而求索
2.3. 关闭文件
- 文件操作完毕后,需要关闭文件
f.close()
3. 文本文件写操作
3.1.打开文件
注意: 以读的方式打开文件,如果文件不存在则会报错
以写的方式打开文件,如果文件不存在则会创建这个文件
f = open('./test.txt', 'w', encoding='utf-8')
3.2. 写操作
- 'w': 写操作时会清空原本文件中的数据,然后重新写入数据
- 'a': 在文件内容后添加新写的内容
f.write('吾将上下而求索')
这时test.txt中的内容变为
test.txt
3.3. 关闭文件
- 文件操作完毕后,需要关闭文件
f.close()
4. 二进制文件的读写操作
- 音频,视频,图片文件都是二进制文件
f = open('./timg.jpg', 'rb')
image_data = f.read()
# bytes : python中二进制数据对应的数据类型
print(image_data)
f.close()
# 二进制文件的写操作
f = open('./img.jpg','wb')
f.write(image_data)
f.close()
5. 通过with关键字去打开文件
with open() as 文件变量名
文件操作
- 通过这种方法打开文件会在文件操作结束后会自动关闭文件
# 读
with open('./img.jpg', 'rb') as img:
img_data = img.read()
# 写
with open('./img1.jpg', 'wb') as img:
img.write(img_data)
三、json文件
json文件,就是文件后缀是.json的文件。内容必须是json格式的内容
json格式:
1. 内容是字符串
2. 最外层是字典, 字典里面必须是键值对
3. 最外层是数组(列表), 数组里面内容必须是数组数据
- json 是Python中内置的一个模块,专门用来处理json模块的,使用时需要导入
import json
1.json文件的读操作
test.json- 直接使用read()去读,获取到的是字符串数据,包含了json中的所有内容
- load(文件对象): 获取指定json文件中的内容,返回值是json最外层的对应的数据类型
python与json中的数据类型对照:
dict > dict
array > list
string > str
number > int/float
true/false > True/False
null > None
# 打开json文件
with open('./test.json', 'r', encoding='utf-8') as f:
# content = f.read()
# print(content, type(content))
content = json.load(f)
print(content, type(content),content['成绩'][2])
2. json文件的写操作
- 写数据
dump(写的内容, 文件对象)
with open('./n.json', 'w', encoding='utf-8') as f:
w_content = [{'name':'派大星', 'age': 12}, {'name':'派大星2', 'age': 12}]
json.dump(w_content, f)
n.json
3. json模块中的其他操作
loads(字符串,编码方式)
> > 将指定的字符串,转换成json数据,将字符串转换成列表或列表
dumps(对象)
> > 将对象转换成json字符串,列表/字典转换成json字符串
content = json.loads('{"name":"派大星", "age": 12}', encoding='utf-8')
print(content, type(content))
content = json.dumps({"name":"派大星", "age": 12})
print(content, type(content))
{'name': '派大星', 'age': 12} <class 'dict'>
{"name": "\u6d3e\u5927\u661f", "age": 12} <class 'str'>
网友评论