模塊管理函數(shù)和類
1.什么是模塊:一個.py文件就是一個模塊
2.import : 可以通過import關(guān)鍵字導入其他的模塊
import 模塊名(.py文件名)
直接導入模塊的時候,相當于把被導入模塊里面的內(nèi)容粘貼到了import的位置
3.怎么使用模塊中的內(nèi)容矢门?什么內(nèi)容是可以使用的在扰?
import 模塊名 ---> 導入模塊中的所有的內(nèi)容
模塊名. 的方式去使用模塊中的內(nèi)容
在模塊中聲明全局變量都可以使用(普通變量豺憔、函數(shù)被去、類)
print('====')
import other
print(':===')
在模塊中聲明全局變量都可以使用(普通變量、函數(shù)、類)
print(other.func_other(),other.name, other.abc)
print('====:')
# print(other.func_other())
4. from 模塊 import 內(nèi)容1,內(nèi)容2... ---> 導入模塊中指定的內(nèi)容
使用內(nèi)容的時候,不用在被導入的變量或者函數(shù)或者類前加模塊名
from other2 import func2
print(func2())
5. 阻止被導入的模塊中的不必要的代碼被粘貼到當前模塊
一般情況下板惑,除了
函數(shù)的聲明
和類的聲明
以外,其他的代碼都放到這個if里面
__name__:是每個模塊自帶的一個屬性偎快,
是用來保存當前這個模塊的名字的冯乘。
但是當正在執(zhí)行當前模塊的時候,
這個屬性的值是固定的'__main__'
print('==:', other.__name__)
print(__name__)
6.使用as重命名
import 模塊名 as 新的名字
from 模塊名 import 函數(shù)名 as 新的函數(shù)名
import other as other3
print(other3.name)
from random import randint as my_rand
print(my_rand(1, 10))
if __name__ == '__main__':
# 這個里面的代碼不會被其他模塊使用
pass
練習:使用一個模塊晒夹,用來管理所有和形狀相關(guān)的功能
(求兩個點之間的距離裆馒、求圓的周長、求圓的面積丐怯、求矩形的周長和面積等)
from management import my_len
print(my_len(5,3))
基本文件操作
(所有)文件操作流程: 打開文件 -> 操作文件(讀/寫) -> 關(guān)閉文件
1.打開文件: open(文件路徑,打開的方式,編碼方式)
文件路徑(必填) ---> 決定打開哪個文件
打開方法(默認值是'r') ---> 決定打開文件后是進行什么樣的操作
'r' - 讀操作(讀出來是字符串)
'rb'/'br' - 讀操作(讀出來的數(shù)據(jù)是二進制)
'w' - 寫操作(可以將文本數(shù)據(jù)寫入文件中)
'wb'/'bw' - 寫操作(可以將二進制數(shù)據(jù)寫入文件中)
'a' - 寫操作(追加)
編碼方式 --> 主要針對文本文件的讀寫(不同的操作系統(tǒng)默認的文本編碼方式不同喷好,windows->gbk, mac->utf-8)
if __name__ == '__main__':
2.文本文件讀操作
"""
a.放在工程外面的文件,寫絕對路徑:/Users/yuting/Desktop/test.txt
"""
# open('/Users/yuting/Desktop/test.txt')
"""
(推薦)
b.將文件放到工程目錄下的某個位置,寫相對路徑(相對于工程目錄):./相對路徑 或者 ../相對路徑
當py文件直接放在工程目錄下读跷,想要使用open打開工程中的其他文件使用'./'
當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ù)對應的數(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ù)組
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()去讀辫红,獲取到的是字符串數(shù)據(jù)凭涂,包含了json文件中的所有的內(nèi)容(包括注釋部分)
# conten = f.read()
# print(conten, type(conten))
"""
load(文件對象): 獲取指定json文件中的內(nèi)容,返回值的類型是json文件最外層的對應的數(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))
異常捕獲
出現(xiàn)異常(錯誤)不想讓程序崩潰贴妻,就可以進行異常捕獲
try:
需要捕獲異常的代碼
except:
出現(xiàn)異常會執(zhí)行的代碼
try:
需要捕獲異常的代碼
except 錯誤類型:
捕獲到指定的錯誤類型切油,才執(zhí)行的代碼
if __name__ == '__main__':
try:
with open('./aaaa.txt') as ff:
print('打開成功')
except FileNotFoundError:
print('===')
open('./aaa.txt','w')