2018-07-31Python(9)

python基礎(chǔ)語法(9)

內(nèi)置模塊

json

json模塊中常用的有兩個方法客情,分別為:

  1. dumps()
    將python中的字典類型轉(zhuǎn)化為json對象镜盯。

  2. loads()
    將json對象轉(zhuǎn)化為字典類型。

    代碼示例:

     import json
     # 字典對象
     
     dict_lesson={
         "name":"python",
         "score":3
     }
     # json.dumps        將Python 字典類型轉(zhuǎn)換為 JSON 對象
     # json.loads        將 JSON 對象轉(zhuǎn)換為 Python 字典
     print(dict_lesson['score'])
     
     json_lesson=json.dumps(dict_lesson)
     
     print(type(json_lesson))   #str
     print(type(json.loads(json_lesson))) #dict   
    
  3. dump()

    將Python內(nèi)置類型序列化為json對象后寫入文件
    代碼示例:

    # 寫入文件
    def writefile(user):
        try:
            with open('./util/users.json','w') as fp:
                list_user = [user]
                json.dump(list_user,fp)
                fp.close()
        except Exception as ex:
            print(ex)
  1. load()

    讀取文件中json形式的字符串元素 轉(zhuǎn)化成python類型
    代碼示例:

     # 讀取文件
     def readfile():
         try:
             with open('./util/users.json','r') as fp:
                 content = json.load(fp)
                 fp.close()
             return content
         except Exception as ex:
             print(ex)
    

文件讀寫

  1. 文件的打開和關(guān)閉open()

     fp = open(file_name [,access_mode][,buffering])
    

    各參數(shù)的細節(jié):

    • file_name: 要訪問的文件名稱,包括擴展名。
    • access_mode: 打開文件的模式(只讀r;寫入w妥色;追加a)默認為只讀
    • buffering:當它為0時不會有寄存,取1時訪問文件會寄存遏片,當大于1時嘹害,這個值就是寄存區(qū)的緩沖大小吮便;為負值時說明寄存去緩沖大小為系統(tǒng)默認笔呀。
  2. File對象的屬性

     # 打開一個文件
     fo = open("foo.txt", "w")
     print "文件名: ", fo.name
     
     #返回true如果文件已被關(guān)閉,否則返回false髓需。
     print "是否已關(guān)閉 : ", fo.closed
     #返回被打開文件的訪問模式许师。
     print "訪問模式 : ", fo.mode
     #如果用print輸出后,必須跟一個空格符僚匆,則返回false微渠。否則返回true。
     print "末尾是否強制加空格 : ", fo.softspace
     
     fo.close()  
    
  3. 打開模式

    標識 模式 說明
    r 只讀 文件不存在報錯
    w 只寫 文件不存在,新建文件
    a 追加 文件不存在,新建文件
    r+ 可讀寫 文件不存在報錯,先讀取文件咧擂,然后才能寫入文件逞盆,反之,寫不進內(nèi)容
    w+ 可讀寫 寫讀取文件松申,然后就無法讀文件了云芦。。贸桶。舅逸。
    a+ 可讀寫 同上,原因是文件指針的位置決定了
* r 就是直接打開已存在的文件,不存在會報錯 
* w 就是打開文件皇筛,文件如果不存在琉历,就會新建一個文件

* r+ 是打開一個可讀寫的文件,文件必須存在水醋,而且在讀之后旗笔,需要加一句:f.seek(),不然會報錯
    
        ## *******************************文件讀寫模式:r+ *********************************
        f = open(unicode(r"C:\測試\2樣.txt", "utf8"), 'r+')
        str1 = f.read()
        print str1
        f.seek(0离例,0)
        f.write("this is seek(0)")
        
        # f.flush()
        f.close() 
  1. write()
    用來將任意字符寫入一個打開的文件换团。不局限與文字悉稠。
write()方法寫入的位置取決于光標的位置宫蛆,寫入時不換行。  
如果寫入的不是字符串,需要先進行類型轉(zhuǎn)換:  

    f = open("/tmp/foo1.txt", "w")
    
    value = ('www.runoob.com', 14)
    s = str(value)
    f.write(s)
    
    f.flush()
    
    # 關(guān)閉打開的文件
    f.close()   
  1. read()讀取文件

     fo=open('content2.txt','r+')
     str=fo.read()
     print(str)
     
     fo.close()  
    
  2. readline() readlines()

    fo=open('content2.txt','r+')
    str1=fo.readline()
    #指針移動到第二行耀盗,讀出所有行放到一個數(shù)組中
    str2=fo.readlines()
    print(str1)
    print(str2)
    
    fo.close()
    ```
    
    ```
    for line in fo:
        print(line, end='')  
  1. tell()
    返回文件對象所在的位置想虎,它是從文件開頭開始算起的字節(jié)數(shù)。

  2. seek()

    用來改變當前的文件位置叛拷。

    • seek(x,0) : 從起始位置即文件首行首字符開始移動 x 個字符
    • seek(x,1) : 表示從當前位置往后移動x個字符
    • seek(-x,2):表示從文件的結(jié)尾往前移動x個字符
  3. pickle模塊實現(xiàn)了基本的數(shù)據(jù)序列和反序列化

    通過pickle模塊的序列化操作我們能夠?qū)⒊绦蛑羞\行的對象信息保存到文件中去舌厨,永久存儲。

    通過pickle模塊的反序列化操作忿薇,我們能夠從文件中創(chuàng)建上一次程序保存的對象裙椭。

    基本接口:

     pickle.dump(obj, file, [,protocol]
    

    import pickle

     # 使用pickle模塊將數(shù)據(jù)對象保存到文件
     data1 = {'a': [1, 2.0, 3, 4+6j],
              'b': ('string', u'Unicode string'),
              'c': None}
     
     selfref_list = [1, 2, 3]
     selfref_list.append(selfref_list)
     
     output = open('data.pkl', 'wb')
     
     # Pickle dictionary using protocol 0.
     pickle.dump(data1, output)
     
     # Pickle the list using the highest protocol available.
     pickle.dump(selfref_list, output, -1)
     
     output.close()
    

    read_file.py

     ```
     #!/usr/bin/python3
         import pprint, pickle
    
         #使用pickle模塊從文件中重構(gòu)python對象
         pkl_file = open('data.pkl', 'rb')
    
         data1 = pickle.load(pkl_file)
         print(data1['a'])
         pprint.pprint(data1)
    
         data2 = pickle.load(pkl_file)
         pprint.pprint(data2)
    
         pkl_file.close()  
    
  4. flush()刷新緩沖區(qū)

    • 將緩沖區(qū)中的數(shù)據(jù)立刻寫入文件,同時清空緩沖區(qū)署浩。

    • 一般來說揉燃,.close()方法會自動調(diào)用flush()方法。

    • 如果需要關(guān)閉前刷新緩沖區(qū)筋栋,就可以使用flush()方法炊汤。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市弊攘,隨后出現(xiàn)的幾起案子抢腐,更是在濱河造成了極大的恐慌,老刑警劉巖襟交,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件迈倍,死亡現(xiàn)場離奇詭異,居然都是意外死亡婿着,警方通過查閱死者的電腦和手機授瘦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竟宋,“玉大人提完,你說我怎么就攤上這事∏鹣溃” “怎么了徒欣?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蜗字。 經(jīng)常有香客問我打肝,道長,這世上最難降的妖魔是什么挪捕? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任粗梭,我火速辦了婚禮,結(jié)果婚禮上级零,老公的妹妹穿的比我還像新娘断医。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布鉴嗤。 她就那樣靜靜地躺著斩启,像睡著了一般。 火紅的嫁衣襯著肌膚如雪醉锅。 梳的紋絲不亂的頭發(fā)上兔簇,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天,我揣著相機與錄音硬耍,去河邊找鬼栅受。 笑死栋艳,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播脯丝,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼崭孤,長吁一口氣:“原來是場噩夢啊……” “哼厘唾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鹃操,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎荆隘,沒想到半個月后恩伺,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體椰拒,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年燃观,在試婚紗的時候發(fā)現(xiàn)自己被綠了褒脯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缆毁。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖脊框,靈堂內(nèi)的尸體忽然破棺而出颁督,到底是詐尸還是另有隱情浇雹,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布昭灵,位于F島的核電站吠裆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏硫痰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一效斑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧柱徙,春花似錦缓屠、人聲如沸护侮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滨溉。三九已至,卻和暖如春长赞,著一層夾襖步出監(jiān)牢的瞬間晦攒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工得哆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留脯颜,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓贩据,卻偏偏與公主長得像栋操,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子饱亮,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

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