Day9-Python-文件操作-2018/7/26

模塊管理函數(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')

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市名惩,隨后出現(xiàn)的幾起案子澎胡,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件攻谁,死亡現(xiàn)場離奇詭異稚伍,居然都是意外死亡,警方通過查閱死者的電腦和手機巢株,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門槐瑞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來熙涤,“玉大人阁苞,你說我怎么就攤上這事§舸欤” “怎么了那槽?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長等舔。 經(jīng)常有香客問我骚灸,道長,這世上最難降的妖魔是什么慌植? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任甚牲,我火速辦了婚禮,結(jié)果婚禮上蝶柿,老公的妹妹穿的比我還像新娘丈钙。我一直安慰自己,他們只是感情好交汤,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布雏赦。 她就那樣靜靜地躺著,像睡著了一般芙扎。 火紅的嫁衣襯著肌膚如雪星岗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天戒洼,我揣著相機與錄音俏橘,去河邊找鬼。 笑死圈浇,一個胖子當著我的面吹牛敷矫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播汉额,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼曹仗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蠕搜?” 一聲冷哼從身側(cè)響起怎茫,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后轨蛤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜜宪,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年祥山,在試婚紗的時候發(fā)現(xiàn)自己被綠了圃验。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡缝呕,死狀恐怖澳窑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情供常,我是刑警寧澤摊聋,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站栈暇,受9級特大地震影響麻裁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜源祈,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一煎源、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧香缺,春花似錦手销、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至埂淮,卻和暖如春姑隅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背倔撞。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工讲仰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人痪蝇。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓鄙陡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親躏啰。 傳聞我的和親對象是個殘疾皇子趁矾,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)给僵,斷路器毫捣,智...
    卡卡羅2017閱讀 134,672評論 18 139
  • 第三十二章 他的選擇 大夫的頭擺得跟個撥浪鼓也似详拙,他不同意,抱著妻子只在哭:“對不起蔓同,對不起饶辙,這都是我的錯...
    古錚_閱讀 213評論 0 1
  • 七八歲的光景,奶奶死了斑粱。依稀記得那年山上的風弃揽,浩浩蕩蕩,綠色延巒的山脈仿佛失去了盡頭则北。 那時候父親點燃了煙矿微,他背...
    淼七木閱讀 396評論 0 0
  • 前言 JavaScript中也有對象,本章主要是介紹JS中對象的基本語法, 本章的重點: "this"的引用 1,...
    Alexander閱讀 447評論 0 0
  • 晨風 穿過榕樹 擠落幾聲雨滴 風暖 雨冷 滿眼的蒼翠 是這個地方 不變的 依舊 啤酒莊園 霓虹燈 閃爍出 ...
    沿海而行閱讀 224評論 0 4