Python 入門 —— Python 文件操作與通過 josn 進行數據存儲

Python 文件操作與josn–數據存儲

1 文件操作

  • 讀寫文件是最常見的IO操作。Python內置了讀寫文件的函數,用法和C是兼容的。
    讀寫文件前,我們先必須瞭解一下,在磁盤上讀寫文件的功能都是由操作系統提供的,現代操作系統不允許普通的程序直接操作磁盤,所以,讀寫文件就是請求操作系統打開一個文件對象(通常稱爲文件描述符),然後,通過操作系統提供的接口從這個文件對象中讀取數據(讀文件),或者把數據寫入這個文件對象(寫文件)。
  • 操作文件的函數/方法
    在python中要操作文件需要記住一個函數和三個方法
    python中一切皆對象
    open :打開文件,並且返回文件操作對象
    read :將文件內容讀取到內存
    write:將指定的內容寫入到文件
    close:關閉文件
    open 函數負責打開文件,並且返回文件對象
    read/wirte/close三個方法都需要通過文件對象調用
  • read方法–讀取文件
    open的第一個參數是要打開的文件明(文件名區分大小寫)
    如果文件存在,返回文件操作對象
    如果文件不存在,會拋出異常
    read方法可以一次性讀入並返回文件的所有內容
    close方法負責關閉文件

編輯TEST文件:
內容:

I’m used for test.

通過python進行打開

1.1 文件的讀取

 # 1. 打開文件
 open方法:負責打開文件
 執行如下:
 f = open('TEXT')     
 # TEXT 文件與本 .py python源文件在同一目錄下,故不需要添加絕對路徑 
 # 2.讀取文件
 # read方法:負責讀取文件,
 # 可一次性讀入並返回文件的所有內容
 f.read()
 test = f.read()
 print = test
 # 3.關閉文件
 # close方法:負責關閉文件
 f.close()

 # 在開發中,通常會先編寫打開和關閉的代碼

執行如下:
這裏寫圖片描述
控制檯顯示如下:這裏寫圖片描述
顯示了文件的內容

1.2 文件指針:

  • 文件指針:
    文件指針標記從哪個位置開始讀取數據
    第一次打開文件時,通常文件指針會指向文件的開始位置
    當執行了read方法後,文件指針會移動到讀取內容的末尾

示例:

 f = open('TEXT')    # 打開文件

 text = f.read()     # 定義 text 爲讀取文件
 print text          # 顯示 text 結果
 print type(text)    # 顯示類型
 print len(text)     # 顯示 text 長度

 print '#' * 50

 text = f.read()     # 再次定義 text
 print text          # 查看文件內容
 print len(text)
 f.close()

執行如下:
這裏寫圖片描述
控制檯顯示如下:
這裏寫圖片描述
後面顯示爲 0 是因爲,文件指針,在調用文件內容後,直接指到了文件最後,因此不會顯示任何內容,當然沒有長讀可言

1.3 寫文件

  • 執行方式
    file = open(‘filename’,’action’)
    常用的方法有’w’,’a’
    其中’w’爲覆蓋,’a’爲追加

1.4 覆蓋

  • 以’w’方式打開文進阿
    如果該文件存在,原文件內容會被覆蓋
    如果文件不存在,創建文件並寫入

示例:

 file = open('TEST','w')   # 以寫的方式打開文件
 test = file.write('HELLO') 
 file.close()             # 關閉文件
 file = open('TEST')
 print file.read()        # 顯示文件,查看文件內容
 file.close()             # 關閉文件

執行如下:
這裏寫圖片描述
控制檯顯示如下:
這裏寫圖片描述

1.5 追加

  • 以追加方式打開文件
    如果該文件存在,文件指針會放在文件的末尾
    如果文件不存在,創建文件並寫入

示例:

 f = open('TEST')

 f = open('TEST')
 print f.read()

 f.close()

 f = open('TEST', 'a')

 f.write('python')  # 追加到文件內容的後面
 # 若想換行追加可在要追加內容前加上 \n 換行符號
 f.close()
 f = open('TEST')
 print f.read()

執行如下:
這裏寫圖片描述
控制檯顯示如下:
這裏寫圖片描述

1.6 文件的逐行讀取

若是文件內容過大直接將文件的全部內顯示到控制檯,此時需要逐行對文件內容進行顯示

示例:
 文件TEXT的內容爲
 HELLOpython
 python


 通過python進行查看

 import time           # 調用 time 函數
 test = open('/etc/passwd')


 while True:              
     text = test.readline()
     print text,         # ',' 表示取消換行
     time.sleep(1)       # time.sleep(1) 表示每隔 1 秒顯示一次
     if not text:
         break

 test.close()

執行如下:
這裏寫圖片描述
控制檯顯示如下:
這裏寫圖片描述
在一行一行的進行顯示

1.7 文件的複製

1.7.1 全部複製

示例

 # 1.打開文件
 # 源文件以只讀的方式打開
 file_read = open('TEST')
 # 目標文件以寫的方式打開
 file_write = open('TEST_COPY','w')

 # 從源文件中讀取內容
 text = file_read.read()
 # 將讀取到的內容寫到目標文件中
 fiel_write.write(text)
 # 關閉文件
 file_read.close()
 file_write.close()

執行如下:
這裏寫圖片描述
複製成功後,將會出現文件TESST_COPY
這裏寫圖片描述
其內容,與TEST內容相同
這裏寫圖片描述

1.7.2 逐行復制

對文本內容進行逐行復制

示例:

test = open('/etc/passwd')
test_write = open('passwd_copy', 'w')


while True:
    text = test.readline()   # 逐行對要複製的文件進行讀取

    if not text:             # 如果文件指針指到最後,則退出循環
        break
    test_write.write(text)   # 將text的內容寫入新文件

test_write.close()

test.close()

執行如下:
這裏寫圖片描述
複製的新文件的內容如下:
這裏寫圖片描述

1.8 文件打開的第二種方式:with

  • 通過 with 進行對文件內容的查看
    關鍵字 with 在不需要訪問文件後將其關閉,在這個程序中,
    我們調用了open(),但沒有調用close();也可以調用 open() 和 close 來打開
    和關閉文件,但這樣做時,如果程序存在bug,導致close()語句沒有執行,
    文件將不會關閉,未妥善地關閉文件可能會導致數據丟失或受損,
    如果在程序中過早地調用close(),
    你會發現需要使用文件時它已經關閉(無法訪問),
    這會導致更多地錯誤,你並非在任何情況下都能輕鬆地確定關閉文件地恰當時機
    通過使用with結構,可讓python去確定,
    你只管打開文件,並在需要時使用它,
    python會在合適的時候自動將其關閉

以 TEST文件爲例:
TEST文件內容如下:
這裏寫圖片描述

示例:

 # 通過with的方式進行文件的打開
 with open('TEST') as file_object:
     # 調用read方法進行文件內容的查看
     contents = file_object.read()
     print contents

執行如下:
這裏寫圖片描述
控制檯顯示如下:
這裏寫圖片描述

逐行對文件進行讀取

 filename = 'TEST'
 with open(filename) as file_object:
     # 通過for語句,逐行對文件進行讀取
     for line in file_object: 
         print line

執行如下:
這裏寫圖片描述
控制檯顯示如下:
這裏寫圖片描述

對文件進行寫入

 # 將文件名用變量進行表示,文件若不存在,執行程序後
 # 會自動新建文件,並執行操作
 filename = 'python'
 # 以寫的方式進行文件的打開
 with open(filename, 'w') as file_object:
     # 寫入如下內容,添加換行符,進行換行添加
     file_object.write('I love study.\n')
     file_object.write('I love python.')
     # 以默認讀的方式進行打開
 with open(filename) as file_object:
     # 在控制檯顯示文件內容
     print file_object.read()

執行如下:
這裏寫圖片描述
控制檯顯示如下:
這裏寫圖片描述

對文件內容進行添加

 # 將文件名用變量進行表示
 filename = 'python'
 # 以添加的方式進行文件的打開
 with open(filename, 'a') as file_object:
     # 添加如下內容,添加換行符,進行換行添加
     file_object.write('I love study.\n')
     file_object.write('I love python.')
     # 以默認讀的方式進行打開
 with open(filename) as file_object:
     # 在控制檯顯示文件內容
     print file_object.read()

執行如下:
這裏寫圖片描述
控制檯顯示如下:
這裏寫圖片描述

對文件內容進行復制

 # 將文件名用變量進行表示
 filename = 'python'
 f = 'python_copy'
 # 以讀的方式打開要進行復制的文件
 with open(filename) as file_obj:
     test = file_obj.read()
 # 以寫的方式打開府之後的文件
 with open(f, 'w') as file_object:
     # 將要進行復制的文件的內容,添加到新的文件中
     file_object.write(test) 

     # 以默認讀的方式進行打開
 with open(f) as file_object:
     # 在控制檯顯示覆制後的文件的內容
     print file_object.read()

執行如下:
這裏寫圖片描述
控制檯顯示如下:與上面的python的文件內容完全相同
這裏寫圖片描述

2 josn–數據存儲

  • json(javascriptObject notation)格式最初是爲javascript開發的,但隨後成了一種常見格式,被包括python在內的衆多語言採用
    很多程序都要求用戶輸入某種信息,
    程序都把用戶提供的信息存儲在列表和字典等數據結構中,
    用戶關閉程序時,你幾乎總是要保存他們的信息:
    一種簡單的方式是使用模塊 json 來存儲數據
    (在python中使用json的時候,主要也就是使用json模塊,json是以一種良好的格式來進行數據的交互)
    模塊 json 讓你能夠將簡單的 Python 數據結構轉存到文件中,
    並在程序再次運行時加載該文件中的數據,
    你還可以使用 json 在 Python 程序之間分享數據,
    更重要的是, json 數據格式並非 Python 專用的,
    這讓你能夠將以json格式存儲的數據與使用其他編程語言的人分享

通過 json 進行數據的存儲與調用

通過 json.dump 方法將數據導入文件中

 import json   # 調用 json 模塊
 number = [1,2,3,4]  # 定義列表

 with open('numbers.json','w') as f_obj:
     # 我們使用函數json.dump()將數字列表存儲到文件中
     json.dump(number,f_obj)

執行如下:
這裏寫圖片描述
產生的存儲文件的內容如下:
這裏寫圖片描述
* .json 中存儲的數據一般是數據結構,在python 中就是,列表,字典等*

通過 json.load 方法加載存儲在 .json 中的信息

示例:

 import json
 filename = 'numbers.json'
 with open(filename) as f_obj:
     # 我們使用函數json.load加載存儲在numbers.json中的信息
     # 並將其存儲到變量numbers中
     numbers = json.load(f_obj)
 print numbers

執行如下:
這裏寫圖片描述
控制檯顯示如下:
這裏寫圖片描述

json 應用示例

  • 如果以前存儲了用戶,就顯示,否則,就提示用戶輸入用戶名並存儲它

代碼如下:

 import json
 filename = "username.json"
 try:
     with open(filename) as f_obj:
         username = json.load(f_obj)
 except ValueError:
     username = raw_input("What is you name? ")
     with open(filename,"w") as f_obj:
         json.dump(username,f_obj)
         print "We'll remember you when you come back %s" % username
 #依賴於try代碼塊成功執行的代碼都應放到else代碼塊中:
 else:
     print "Welcome back %s " % username

執行如下:
這裏寫圖片描述
控制檯顯示如下:
若是沒有用戶
這裏寫圖片描述
若是有用戶
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章