模塊管理函數(shù)和類
1.什么是模塊:一個.py文件就是一個模塊
2.import : 可以通過import關(guān)鍵字導(dǎo)入其他的模塊
import 模塊名(.py文件名)
直接導(dǎo)入模塊的時候,相當(dāng)于把被導(dǎo)入模塊里面的內(nèi)容粘貼到了import的位置
3.怎么使用模塊中的內(nèi)容?什么內(nèi)容是可以使用的?
import 模塊名 ---> 導(dǎo)入模塊中的所有的內(nèi)容
模塊名.的方式去使用模塊中的內(nèi)容
在模塊中聲明全局變量都可以使用(普通變量、函數(shù)、類)
print('====')
import other
在模塊中聲明全局變量都可以使用(普通變量、函數(shù)、類)
print(other.func_other(), other.name, other.abc)
print('====')
- from 模塊 import 內(nèi)容1,內(nèi)容2... ---> 導(dǎo)入模塊中指定的內(nèi)容
使用內(nèi)容的時候,不用在被導(dǎo)入的變量或者函數(shù)或者類前加模塊名
from other2 import func2
func2()
- 阻止被導(dǎo)入的模塊中的不必要的代碼被粘貼到當(dāng)前模塊
一般情況下,除了函數(shù)的聲明和類的聲明以外,其他的代碼都放到這個if里面
name:是每個模塊自帶的一個屬性,是用來保存當(dāng)前這個模塊的名字的。
但是當(dāng)正在執(zhí)行當(dāng)前模塊的時候,這個屬性的值是固定的'main'
print('==:', other.__name__)
print(__name__)
6.使用as重命名
import 模塊名 as 新的名字
from 模塊名 import 函數(shù)名 as 新的函數(shù)名
import math as my_math
print(my_math.pi)
from random import randint as my_rand
print(my_rand(1, 10))
if name == 'main':
這個里面的代碼不會被其他模塊使用
pass
基本文件操作
所有)文件操作流程: 打開文件 -> 操作文件(讀/寫) -> 關(guān)閉文件
1.打開文件: open(文件路徑,打開的方式,編碼方式)
文件路徑(必填) ---> 決定打開哪個文件
打開方法(默認(rèn)值是'r') ---> 決定打開文件后是進行什么樣的操作
'r' - 讀操作(讀出來是字符串)
'rb'/'br' - 讀操作(讀出來的數(shù)據(jù)是二進制)
'w' - 寫操作(可以將文本數(shù)據(jù)寫入文件中)
'wb'/'bw' - 寫操作(可以將二進制數(shù)據(jù)寫入文件中)
'a' - 寫操作(追加)
編碼方式 --> 主要針對文本文件的讀寫(不同的操作系統(tǒng)默認(rèn)的文本編碼方式不同,windows->gbk, mac->utf-8)
if name == 'main':
2.文本文件讀操作
a.放在工程外面的文件,寫絕對路徑:/Users/yuting/Desktop/test.txt
open('/Users/yuting/Desktop/test.txt
(推薦)
b.將文件放到工程目錄下的某個位置,寫相對路徑(相對于工程目錄):./相對路徑 或者 ../相對路徑
當(dāng)py文件直接放在工程目錄下,想要使用open打開工程中的其他文件使用'./'
當(dāng)py文件在工程目錄的子目錄下面,想要使用open打開工程中的其他文件使用'../
open('./test1.txt')
open('./files/test2.txt')
open('./files/text/test2.txt')
1.打開文件
打開文件,返回文件句柄(文件代言人)
f = open('./test1.txt', 'r', encoding='utf-8')
2.讀文件(獲取文件文件的內(nèi)容
文件.read() : 獲取文件內(nèi)容,并且返回
read(n) --> n 設(shè)置讀的長度
content = f.read()
print(content)
3.關(guān)閉文件
f.close()
3.文本文件的寫操作
1.打開文件
注意: 以讀的方式打開文件,如果這個文件不存在,會報錯FileNotFindError;
以寫的方式打開文件,如果這個文件不存在,就會創(chuàng)建這個文件
f = open('./test11.txt', 'a', encoding='utf-8')
2.寫操作
'w':在寫的時候會清空文件中原來的內(nèi)容,然后再往里面寫數(shù)據(jù)
'a':在原文件內(nèi)容的最后添加新的數(shù)據(jù)
f.write('疑是地上霜')
3.關(guān)閉文件
f.close()
4.二進制文件的讀寫操作
音頻、視頻、圖片文件,都是二進制文件
f = open('./files/luffy.jpeg', 'rb')
讀文件
image_data = f.read()
bytes: python中二進制數(shù)據(jù)對應(yīng)的數(shù)據(jù)類型
print(type(image_data),image_data)
關(guān)閉文件
f.close()
二進制文件的寫操作
f = open('./files/new.jpeg', 'wb')
f.write(image_data)
f.close()
4.通過with關(guān)鍵字去打開文件
with open() as 文件變量名:
文件操作
在文件操作結(jié)束后會自動去關(guān)閉文件
讀
with open('./files/一人之下.mp4','rb') as file: mp4_data = file.read()
寫
with open('./new.mp4', 'wb') as f: f.write(mp4_data)
json
數(shù)據(jù)本地化: 將數(shù)據(jù)保存到本地文件中(文本、json、數(shù)據(jù)庫)
json文件(文本),就是文件后綴是.json的文件。內(nèi)容必須是json格式的內(nèi)容
json格式:
1.內(nèi)容是字符串
2.最外層是字典,字典里面就必須是鍵值對
3.最外層是數(shù)組(列表),數(shù)組里面內(nèi)容必須是數(shù)組數(shù)j
json是python中內(nèi)置的一個模塊,專門用來處理json數(shù)據(jù)的
import json
if name == 'main':
1.json文件的讀操作
打開json文件
with open('./files/test.json', 'r', encoding='utf-8') as f:
直接使用read()去讀,獲取到的是字符串?dāng)?shù)據(jù),包含了json文件中的所有的內(nèi)容(包括注釋部分)
conten = f.read() print(conten, type(conten))
load(文件對象): 獲取指定json文件中的內(nèi)容,返回值的類型是json文件最外層的對應(yīng)的數(shù)據(jù)類型
dict ---> dict
array ---> list
string ---> str
number ---> int/float
true/flase --> True/Flase
null ---> None
content = json.load(f)
print(content, type(content), content['成績'][1])
2.json文件的寫操作
打開文件
with open('./files/new.json', 'w', encoding='utf-8') as f:
寫數(shù)據(jù)
dump(寫的內(nèi)容, 文件對象)
w_content = 'abc'
w_content = [
{'name': 'a1', 'age': 18},
{'name': 'a2', 'age': 20}
]
json.dump(w_content, f)
3.json模塊的其他操作
loads(字符串,編碼方式) ---> 將指定的字符串(json字符串),轉(zhuǎn)化成json數(shù)據(jù)
將字符串轉(zhuǎn)換成字典\將字符串轉(zhuǎn)換成列表
{"a": true, "b": 2}
content = json.loads('["a",100, false,{"a":1, "abc":"100"}]', encoding='utf-8')
print(content, type(content))
dumps(對象)
將對象轉(zhuǎn)換成json字符串
字典/列表轉(zhuǎn)換成json字符串
content = json.dumps(['aaa', 1, True])
content = '["aaa", 1, true]'
content2 = str(['aaa',1, True])
content2 = '['aaa', 1, True]'
print(content,content2, type(content))
`