一、模塊管理函數(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 模塊名
模塊名.的方式去使用模塊的內(nèi)容
在模塊中聲明全局變量都可以使用(普通變量、函數(shù)、類)
4.from 模塊 import 內(nèi)容1,內(nèi)容2... ---->導(dǎo)入模塊中指定內(nèi)容
使用內(nèi)容的時候,不要在被導(dǎo)入的變量或者函數(shù)或者類前加模塊名
5.阻止被導(dǎo)入的模塊中的不必要的代碼被粘貼到當(dāng)前模塊
一般情況下,除了函數(shù)的聲明和類的聲明以外,其他的代碼都放到這個if里面
name:是每個模塊自帶的一個屬性,是用來保存當(dāng)前這個模塊的名字的
但是當(dāng)正在執(zhí)行當(dāng)前模塊時,這個屬性的值是固定的'main'
# import other
from other import value
print(__name__)
# print('==',other.__name__)
if __name__ == '__main__':
#這個里面的代碼不會被其模塊使用
print('一行白鷺上青天')
另一模塊other
value = print('抓周樹人跟我魯迅有什么關(guān)系')
#在這寫當(dāng)前模塊中不需要被其他模塊導(dǎo)入和粘貼的代碼
if __name__ == '__main__':
#這個里面的d代碼不會被其他模塊使用
value2 = print('少小離家老大回')
結(jié)果
抓周樹人跟我魯迅有什么關(guān)系
__main__
少小離家老大回
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))
結(jié)果
3.141592653589793
9
練習(xí):使用有個模塊用來管理和形狀相關(guān)的功能。求兩個點之間的距離,求圓的周長,求圓的面積,求矩陣的周長和面積
from math_way import func1
func1(1,3)
from math_way import func2
func2(1,2)
另一個模塊math_way
def func1(a,b):
print(a+b)
def func2(a,b):
print('你好世界')
def func3():
pass
def func4():
pass
def func5():
pass
def func6():
pass
結(jié)果
4
你好世界
二、基本文件操作
(所有)文件操作流程:打開文件-->操作文件(讀/寫)--->關(guān)閉文件
打開文件:open(文件路徑,打開方式,編碼方式)
文件路徑(必寫)--->決定打開哪個文件
打開方式(默認(rèn)值是'r')--->決定打開文件后是進行什么樣的操作
- 'r'-->讀操作(讀出來是字符串)
- 'rb'/'br'--讀操作(讀出來的數(shù)據(jù)是二進制)
- 'w'--寫操作(可以將文本數(shù)據(jù)寫入文件中)
- 'wb'/'bw'-寫操作(可以將二進制數(shù)據(jù)寫入文件中)
- 'a'-寫操作(追加)
編碼方式--->主要針對文本文件的讀寫(不同的操作系統(tǒng)默認(rèn)的文本文件編碼方式不同)
windows->gbk,mac->uf-8
2,文本文件讀操作
a.放在過程外面的文件,寫絕對路徑
open('D:\中一\新建文本文檔.txt')
(推薦)
b.將文件放到過程目錄下的某個位置,寫相對路徑(相對于過程目錄):./相對路徑 或者../相對路徑
當(dāng)py文件直接放在程工目錄下,想要使用open打開工程中的其他文件使用'./'
當(dāng)py文件在工程目錄的子目錄下面,想要使用open打開工程中的其他文件使用'../'
open('./test.txt')
1.打開文件
#打開一個文件,返回文件句柄(文件代言人)
fo = open('./test.txt','r',encoding='utf-8')
2.讀文件(獲取文件內(nèi)容)
文件名.read():獲取文件內(nèi)容并且返回
read(n)-->n,設(shè)置讀的長度
content = fo.read()
print(content)
3.關(guān)閉文件
fo.close()
3.文本文件的寫操作
1).打開文件
注意:以讀的方式打開文件,如果這個文件不存在,會報錯FileNotFindError
以寫的方式打開文件,如果這個文件不存在,就會創(chuàng)建這個文件
- 'w':在寫的時候回清空文件中原來的內(nèi)容,然后再往里面寫數(shù)據(jù)
- 'a':在源文件內(nèi)容的最后添加新的數(shù)據(jù)
fo1 = open('./test.txt','w',encoding='utf-8')
# print(type(fo1))
fo1.write('疑是銀河落九天')
#3.關(guān)閉文件
fo1.close()
4.二進制文件的讀寫操作
音頻、視頻、圖片文件都是二進制文件
fo2 = open('./venv/photo.jpg','rb')
image = fo2.read()
#bytes:python中二進制數(shù)據(jù)對應(yīng)類型
print(image)
fo2.close()
"""二進制文件的寫操作"""
fo3 = open('./venv/photo1.jpg','wb')
fo3.write(image)
fo3.close()
通過with關(guān)鍵字去打開文件
with open() as 文件變量名:
文件操作
文件操作結(jié)束后會自動去關(guān)閉文件
#讀
with open('./venv/photo.jpg','rb') as f:
mp4_data = f.read()
print(mp4_data)
#寫
with open('./venv/photo.jpg','wb') as f:
mp4_data1 = f.write(mp4_data)
print(mp4_data1)
三、json文件
數(shù)據(jù)本地化:將數(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
####1.json文件的讀操作
打開json文件
with open('./test.json','r',encoding='utf-8') as f:
#直接使用read()去讀,獲取到的是字符串,包含了json文件的所有的內(nèi)容(包括注釋)
# content = f.read()
# print(content)
load(文件對象):獲取指定json文件中的內(nèi)容
dict -->dict
array-->list
string-->str
number-->int/float
true/false-->True/False
null-->None
content = json.load(f)
print(content,type(content))
print(content["成績"][1])
####2.json文件的寫操作
with open('./new.test.json','w',encoding='utf-8') as f:
#寫數(shù)據(jù)
"""dump(寫的內(nèi)容,文件對象)"""
w_content = 'abc'
json.dump(w_content,f)
3.json模塊的其他操作
將字符串轉(zhuǎn)換成字典、將字符串轉(zhuǎn)化成列表
content = json.loads('"abc,false"',encoding='utf-8')
print(content,type(content))
dumps(對象)
將對象轉(zhuǎn)換成json字符串
字典/列表轉(zhuǎn)換成json字符串
content = json.dumps(['aaa',1,True])
content2 = str(['aaa',1,True])
print(content,content2,type(content))
四、異常捕獲
出現(xiàn)異常(錯誤)不想讓程序崩潰,就可以進行異常捕獲
第一種
try:
需要捕獲異常的代碼
eexcept:
出現(xiàn)異常會執(zhí)行的代碼
第二種
try:
需要捕獲異常的代碼
eexcept 錯誤類型:
捕獲到指定的錯誤類型才執(zhí)行的代碼
if __name__ == '__main__':
try:
with open('./aaa.txt') as ff:
print('打開成功')
except FileNotFoundError:
open('./aaa.txt','w')
建立一個名為aaa.txt的文本文檔,且打印出
打開成功