day09 Python文件操作,json文件操作剖淀,try異常捕獲

一、模塊管理函數(shù)和類

1纤房、什么是模塊: 一個(gè).py文件就是一個(gè)模塊

2纵隔、import :可以通過(guò)import 關(guān)鍵字導(dǎo)入其他的模塊

格式: import 模塊名(.py文件名,沒有后綴)
直接導(dǎo)入模塊的時(shí)候炮姨,相當(dāng)于把被導(dǎo)入的模塊里面的內(nèi)容粘貼到import位置

3捌刮、怎么使用模塊中的內(nèi)容,什么模塊能用舒岸?

import 模塊名 --->導(dǎo)入模塊中所有的內(nèi)容
模塊名.函數(shù)的方式去使用模塊中的內(nèi)容
例如:

import random
  random.randint()

在模塊中聲明全局變量都可以使用(普通變量绅作,函數(shù),類蛾派,global聲明的變量)

print('======')
import other201807
print('11---', other201807.__name__)  # 打印的是模塊的名字
print('======')
======
10
11--- other201807
======

4俄认、 from 模塊 import 內(nèi)容1,內(nèi)容2碍脏,內(nèi)容3.梭依。稍算。典尾。--->導(dǎo)入模塊中指定的內(nèi)容

使用內(nèi)容的時(shí)候,不用在被導(dǎo)入的變量或者函數(shù)或者類前面加模塊名
使用的時(shí)候還是會(huì)把模塊的內(nèi)容復(fù)制了一遍糊探,但只能使用導(dǎo)入的內(nèi)容

from other2 import func_name1
func_name1()

5钾埂、阻止被導(dǎo)入的模塊中的不必要的代碼被粘貼到當(dāng)前模塊

一般情況下,除了函數(shù)的聲明和類的聲明以外科平,其他的代碼都放入if里面

name:是每個(gè)模塊自帶的一個(gè)屬性褥紫,是用來(lái)保存當(dāng)前這個(gè)模塊的名字的。
但是當(dāng)正在執(zhí)行當(dāng)前模塊的時(shí)候瞪慧,這個(gè)屬性的值是固定的'main'

if __name__ =='__main__':
    # 這個(gè)里面的代碼不會(huì)被其他的模塊使用
    pass

6髓考、使用as重命名

import 模塊名 as 新的名字
from 模塊名 import 函數(shù)名 as 新的函數(shù)名字

import math as my_math
print(my_math.pi)

二、文件基本操作

(所有)文件操作流程:打開文件--->操作文件(讀/寫)--->
關(guān)閉文件
1弃酌、打開文件:open(文件路徑氨菇,打開的方式,編碼方式)
文件路徑 (必填)--->決定打開哪個(gè)文件
文件打開的方式(默認(rèn)值是'r')--->決定打開文件后是進(jìn)行什么操作
'r'--讀操作(讀出來(lái)的是字符串)文件不存在會(huì)報(bào)錯(cuò)
'rb'/'br'--讀操作(讀出來(lái)的數(shù)據(jù)是二進(jìn)制)二進(jìn)制文件編碼方式不能設(shè)置
'w'--寫操作(可以將文本數(shù)據(jù)寫入文件中)文件不存在會(huì)創(chuàng)建
'wb'/'bw' --寫操作(可以將二進(jìn)制數(shù)據(jù)寫入文件中)二進(jìn)制文件編碼方式不能設(shè)置
'a' - 寫操作(追加)

編碼方式 -->主要針對(duì)文本文件的讀寫(不同的操作系統(tǒng)默認(rèn)的文本編碼方式不同windows->gbk mac->utf-8)

2妓湘、文本文件讀操作
a查蓉、放在工程外面的文件,寫絕對(duì)路徑
(推薦)b榜贴、將文件放到工程目錄下的某個(gè)位置豌研,寫相對(duì)路徑(相對(duì)工程目錄): ./相對(duì)路徑或者../相對(duì)路徑
例如: 當(dāng)py文件直接放在工程目錄下,想要使用open打開工程中的其他文件使用'./',當(dāng)py文件在工程目錄的子目錄下面鹃共,想要使用open打開工程中的其他文件使用'./'

 open('./files/text.txt')
# 1鬼佣、打開文件
# 打開文件,返回文件句柄(文件代言人)
f = open('./files/text.txt', 'r', encoding='utf-8')
# 2及汉、讀文件(獲取文件的內(nèi)容)
"""
文件.read():獲取文件內(nèi)容沮趣,并且返回
read(n)--->n 設(shè)置讀的長(zhǎng)度
"""
content = f.read(2)
print(content)

content2 = f.read()
print('===', content2)
# 3、關(guān)閉文件
f.close()

3坷随、文本文件的寫操作
1房铭、打開文件 注意:以讀的方式打開文件,如果這個(gè)文件不存在温眉,會(huì)報(bào)FilesNotFindError;
以寫的方式打開文件缸匪,如果這個(gè)文件不存在,就會(huì)創(chuàng)建這個(gè)文件f = open('./text.txt', 'w', encoding='utf-8')
2类溢、寫操作(‘w’:在寫的時(shí)候會(huì)清空文件原來(lái)的內(nèi)容凌蔬,然后再往里寫) ‘a(chǎn)’:在原文件內(nèi)容的最后添加新的數(shù)據(jù)
f.write('這一個(gè)測(cè)試文件,在進(jìn)行測(cè)試')
3闯冷、關(guān)閉文件
f.close()

4砂心、二進(jìn)制文件的讀寫操作
音頻、視頻蛇耀、圖片文件辩诞,都是二進(jìn)制文件

g = open('./files/photo.png', 'rb')
image_data = g.read()
#  bytes:python中二進(jìn)制數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)類型
print(type(image_data), image_data)
g.close()

"""二進(jìn)制文件的寫操作"""
f = open('./files/new.png')
f.write(image_data)
f.close()

4、通過(guò)with關(guān)鍵字去打開文件
格式: with open() as 文件變量名:
(一個(gè)縮進(jìn))文件操作
在文件操作結(jié)束后會(huì)自動(dòng)去關(guān)閉文件

#  讀(以二進(jìn)制格式打開)
with open('./files/photo.png', 'rb') as f:
    png_data = f.read()

# 寫(以二進(jìn)制格式打開)
with open('./files/photo.png', 'wb') as g:
    png_data1 = g.read()
文件操作

三纺涤、json文件

json文件(文本)译暂,就是文件后綴是.json的文件。內(nèi)容必須是json的格式

json格式:最外層是一個(gè)元素
1撩炊、最外層可以是字符串外永,必須用雙引號(hào)
2、最外層是字典拧咳,字典里面就必須是鍵值對(duì)
3伯顶、最外層也可以是數(shù)組(列表),數(shù)據(jù)里面的內(nèi)容必須是數(shù)組數(shù)據(jù)

1骆膝、json是Python中內(nèi)置的一個(gè)模塊祭衩,專門用來(lái)處理json數(shù)據(jù)的

import json

1、json文件的讀操作

打開json文件

with open('./test.json', 'r', encoding='utf-8') as f:

直接使用read去讀谭网,獲取到的是字符串?dāng)?shù)據(jù)汪厨,包含json所有的內(nèi)容(包括注釋)
load(文件對(duì)象):獲取指定json文件中的內(nèi)容,返回值最外層的對(duì)應(yīng)數(shù)據(jù)類型,即讀出來(lái)的數(shù)據(jù)類型為json中對(duì)應(yīng)的數(shù)據(jù)類型
json ----> python
dict--->dict
array(列表里的字符串元素必須用雙引號(hào))--->list
string(必須用雙引號(hào)) -->str
number --->int/float
true/false-->True/False
null --->none

content = json.load(f)
   print(content, type(content), content['name'])
{'name': 'dsa', 'age': 123} <class 'dict'> dsa

2愉择、json文件的寫操作

python基本數(shù)據(jù)類型都可以直接寫到j(luò)son文件中

with open('./new.json', 'w', encoding='utf-8') as f:
    # 寫數(shù)據(jù)
    dump(寫的內(nèi)容劫乱,文件對(duì)象)
    w_content = 'abc'
    json.dump(w_content, f)

# 練習(xí):輸入學(xué)生的姓名和電話织中,保存到本地(要求再次啟動(dòng)的,再添加學(xué)生信息的時(shí)候衷戈,之間添加的信息還在)
 name = input('名字:')
tel = input('電話:')
 student = {'name': name, 'tel': tel}
 old_data = []
 with open('./students.json', 'r', encoding='utf-8') as g:
     old_data = json.load(f)
     old_data.append(student)

with open('./students.json', 'w', encoding='utf-8') as g:
     json.dump(old_data, g)
#文件不存在會(huì)報(bào)錯(cuò)

3狭吼、json模塊的其他操作

loads(字符串,編碼方式)-->將指定的字符串(json字符串)殖妇,轉(zhuǎn)化成json數(shù)據(jù)將字符串轉(zhuǎn)換成字典\將字符串轉(zhuǎn)換成列表

content1 = json.loads('"abcde"', encoding='utf-8')
print(content1, type(content1))
abcde <class 'str'>

dumps(對(duì)象)
dumps:將json對(duì)象轉(zhuǎn)換成json字符串
字典/列表轉(zhuǎn)換成json字符串

content3 = json.dumps(['abcde', 1, True, [1, 2, 3]])
#content3 = '["abcde", 1, true, [1, 2, 3]]'
print(content3, type(content3))
["abcde", 1, true, [1, 2, 3]] <class 'str'>

四刁笙、異常捕獲 初步認(rèn)識(shí)

什么是異常?
異常即是一個(gè)事件谦趣,該事件會(huì)在程序執(zhí)行過(guò)程中發(fā)生疲吸,影響了程序的正常執(zhí)行。一般情況下前鹅,在Python無(wú)法正常處理程序時(shí)就會(huì)發(fā)生一個(gè)異常摘悴。異常是Python對(duì)象,表示一個(gè)錯(cuò)誤舰绘。當(dāng)Python腳本發(fā)生異常時(shí)我們需要捕獲處理它蹂喻,否則程序會(huì)終止執(zhí)行。 出現(xiàn)異常(錯(cuò)誤)不想讓程序崩潰捂寿,就可以進(jìn)行異常捕獲口四。
try:
需要捕獲異常的代碼(如果沒有異常,執(zhí)行完代碼塊后秦陋,直接執(zhí)行后面的其他語(yǔ)句蔓彩。)
except:
出現(xiàn)異常會(huì)執(zhí)行的代碼

try:
需要捕獲異常的代碼,(當(dāng)有多個(gè)錯(cuò)誤的時(shí)候踱侣,如果指定的錯(cuò)誤在第一個(gè)粪小,程序不會(huì)崩潰大磺,捕獲到第一個(gè)錯(cuò)誤就直接執(zhí)行except后面的代碼抡句,如果指定的錯(cuò)誤沒有在第一個(gè),程序就崩潰)
except 錯(cuò)誤類型:
捕獲到指定的錯(cuò)誤類型杠愧,才會(huì)執(zhí)行的代碼

異常類型見菜鳥教程
想要捕獲多個(gè)錯(cuò)誤類型:except(錯(cuò)誤類型1待榔,錯(cuò)誤類型2....)

try:
      代碼塊1
except:
      代碼塊2
  finally:
      代碼塊3

代碼塊3是在代碼塊1沒有異常,和代碼塊1出現(xiàn)異常并捕獲到后才執(zhí)行流济。

raise:拋出異常
總結(jié):1.異常捕獲不是什么都要用锐锣,只有程序員知道會(huì)出現(xiàn)異常,并想要處理異常绳瘟,而不是讓程序崩潰的情況才異常捕獲雕憔。
2.使用捕獲異常的時(shí)候,不能讓except捕獲到所有的錯(cuò)誤類型糖声,而是捕獲特定的異常斤彼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末分瘦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子琉苇,更是在濱河造成了極大的恐慌嘲玫,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件并扇,死亡現(xiàn)場(chǎng)離奇詭異去团,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)穷蛹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門土陪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人肴熏,你說(shuō)我怎么就攤上這事旺坠。” “怎么了扮超?”我有些...
    開封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵取刃,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我出刷,道長(zhǎng)璧疗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任馁龟,我火速辦了婚禮崩侠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坷檩。我一直安慰自己却音,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開白布矢炼。 她就那樣靜靜地躺著系瓢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪句灌。 梳的紋絲不亂的頭發(fā)上夷陋,一...
    開封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音胰锌,去河邊找鬼骗绕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛资昧,可吹牛的內(nèi)容都是我干的酬土。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼格带,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼撤缴!你這毒婦竟也來(lái)了东揣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤腹泌,失蹤者是張志新(化名)和其女友劉穎嘶卧,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凉袱,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡芥吟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了专甩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钟鸵。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖涤躲,靈堂內(nèi)的尸體忽然破棺而出棺耍,到底是詐尸還是另有隱情,我是刑警寧澤种樱,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布蒙袍,位于F島的核電站,受9級(jí)特大地震影響嫩挤,放射性物質(zhì)發(fā)生泄漏害幅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一岂昭、第九天 我趴在偏房一處隱蔽的房頂上張望以现。 院中可真熱鬧,春花似錦约啊、人聲如沸邑遏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)记盒。三九已至,卻和暖如春枢里,著一層夾襖步出監(jiān)牢的瞬間孽鸡,已是汗流浹背蹂午。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工栏豺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人豆胸。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓奥洼,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親晚胡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子灵奖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理嚼沿,服務(wù)發(fā)現(xiàn),斷路器瓷患,智...
    卡卡羅2017閱讀 134,637評(píng)論 18 139
  • 一骡尽、快捷鍵 ctr+b 執(zhí)行ctr+/ 單行注釋ctr+c ...
    o_8319閱讀 5,793評(píng)論 2 16
  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 5,729評(píng)論 0 10
  • 鳥音婉轉(zhuǎn)擅编,有如天籟攀细,不覺駐足。 陽(yáng)光透過(guò)濃密的枝椏漏下點(diǎn)點(diǎn)光斑于湖面爱态,鳥聲便是從此處流出谭贪。一女子在湖邊石階上浣衣。...
    M四月M閱讀 217評(píng)論 0 1
  • 緩緩的睜開眼睛锦担,映入眼簾的是一片生機(jī)盎然的世界俭识,陽(yáng)光是如此璀璨,空氣是如此的清晰洞渔,深深的呼吸了氧吧般的空氣套媚。“這難...
    風(fēng)中搖曳的星星閱讀 332評(píng)論 0 0