1. 程式人生 > >python檔案IO及其相關問題

python檔案IO及其相關問題

前天用python做專案,將字典存入檔案,以及讀取檔案中的字典。

遇到的幾個問題:

1.開啟檔案的時候為什麼要用

with open('file' , 'r') as f:

2.字典在檔案中的讀取與存入方法

在網上找到了答案。

1.關於 with ... as  ...

其實它的正確寫法應該是

try:
    f = open('xxx')
except:
    print 'fail to open'
    exit(-1)
try:
    do something
except:
    do something
finally:
    f.close()

try和 except 用來處理異常的。相關知識點參見:

python3 錯誤和異常

with... as ... 還可以這樣用

>>> class A:  
    def __enter__(self):  
        print 'in enter'  
    def __exit__(self, e_t, e_v, t_b):  
        print 'in exit'  
  
>>> with A() as a:  
    print 'in with'  
  
in enter  
in with  
in exit  

2.字典的讀取和存入需要用到:json模組

概念:

  序列化(Serialization):將物件的狀態資訊轉換為可以儲存或可以通過網路傳輸的過程,傳輸的格式可以是JSON,XML等。反序列化就是從儲存區域(JSON,XML)讀取反序列化物件的狀態,重新建立該物件。

  JSON(Java Script Object Notation):一種輕量級資料互動格式,相對於XML而言更簡單,也易於閱讀和編寫,機器也方便解析和生成,Json是JavaScript中的一個子集。

  python2.6版本開始加入了JSON模組,python的json模組序列化與反序列化的過程分別是encoding和decoding。

  • encoding:把一個python物件編碼轉換成Json字串。
  • decoding:把json格式字串編碼轉換成python物件。

具體應用:

  json提供四個功能:dumps, dump, loads, load

複製程式碼
1 # dumps功能
2 # 將資料通過特殊的形式轉換為所有程式語言都認識的字串
3 >>> import json 4 >>> data = ['aa', 'bb', 'cc'] 5 >>> j_str = json.dumps(data) 6 >>> j_str 7 '["aa", "bb", "cc"]'
複製程式碼複製程式碼
1 # loads功能
2 # 將json編碼的字串再轉換為python的資料結構
3 >>> j_str
4 '["aa", "bb", "cc"]'
5 >>> mes = json.loads(j_str)
6 >>> mes
7 ['aa', 'bb', 'cc']
複製程式碼
1 # dump功能
2 # 將資料通過特殊的形式轉換為所有程式語言都認識的字串,並寫入檔案
3 with open('D:/tmp.json', 'w') as f:
4     json.dump(data, f)
1 # load功能
2 # 從資料檔案中讀取資料,並將json編碼的字串轉換為python的資料結構
3 with open('D:/tmp.json', 'r') as f:
4     data = json.load(f)

 說明

  json編碼支援的基本型別有:None, bool, int, float, string, list, tuple, dict.

  對於字典,json會假設key是字串(字典中的任何非字串key都會在編碼時轉換為字串),要符合JSON規範,應該只對python列表和字典進行編碼。此外,在WEB應用中,把最頂層物件定義為字典是一種標準做法。

  json編碼的格式幾乎和python語法一致,略有不同的是:True會被對映為true,False會被對映為false,None會被對映為null,元組()會被對映為列表[],因為其他語言沒有元組的概念,只有陣列,也就是列表。

1 >>> import json
2 >>> data = {'a':True, 'b':False, 'c':None, 'd':(1,2), 1:'abc'}
3 >>> j_str = json.dumps(data)
4 >>> j_str
5 '{"a": true, "c": null, "d": [1, 2], "b": false, "1": "abc"}'


相關推薦

python檔案IO及其相關問題

前天用python做專案,將字典存入檔案,以及讀取檔案中的字典。遇到的幾個問題:1.開啟檔案的時候為什麼要用with open('file' , 'r') as f:2.字典在檔案中的讀取與存入方法在網上找到了答案。1.關於 with ... as  ...其實它的正確寫法應

python檔案IO相關

python對檔案IO的支援很完善,python3更是針對編碼形成了一套更完整的體系。檔案操作主要可以分為檔案操作、目錄操作和其他常用操作三類,以下依次說明,常用方法依舊使用粗體標出。 本文有部分內容轉載自網上。 常用檔案操作方法(注意檔案指標概念)

Python檔案&IO處理技巧(1): 讀寫、重定向、間隔符、路徑、存在性與檔案列表

1. 文字資料的讀寫 open() & write() : rt模式的重新整理模式 當我們需要讀寫各種不同編碼的文字資料(如ASCII,UTF-8或UTF-16編碼等), 可以直接使用帶rt模式的open()內建函式。如果需要將文字內容寫入到一個檔案中,就要使用帶有

Python——檔案IO

列印到螢幕 print 讀取鍵盤輸入 input: str = input('請輸入:') print(str) raw_input 用法跟input相同,但是input函

Python檔案&IO處理技巧(1): 讀寫、重定向、間隔符、路徑、存在性與檔案列表

1. 文字資料的讀寫 open() & write() : rt模式的重新整理模式 當我們需要讀寫各種不同編碼的文字資料(如ASCII,UTF-8或UTF-16編碼等), 可以直接使用帶rt模式的open()內建函式。如果需要將文字內容寫入到一個檔案中,就要使用帶有 w

python爬蟲Scrapy及其效能相關

在編寫爬蟲時,效能的消耗主要在IO請求中,當單程序單執行緒模式下請求URL時必然會引起等待,從而使得請求整體變慢。 同步執行 import requests def fetch_async(url): response = requests.get(url) return

Python遞迴列出目錄中檔案指令碼及其匿名函式

1.遞迴列出目錄裡的檔案的指令碼舉例 列出目錄中的檔案可以通過下面方法:os.listdir() In [1]: import os In [4]: os.listdir('/root') Out[4]: ['.tcshrc', '.bash_history', '.bashrc',

風火程式設計--python檔案管理o模組的相關內容

os模組的常用屬性和方法 os屬性 os.linesep # 換行符 os.sep # 路徑名分隔符 os.pathsep # 路徑分隔符 os.curdir # 當前路徑 os.pardir

3.3Apue檔案IO——fcntl函式及其使用示例

為什麼要使用fcntl函式 假設我們已經打開了一個檔案,那麼當我想修改已開啟檔案的屬性時,就可以利用fcntl函式直接改變已開啟檔案的屬性,而不用關閉然後重新開啟來設定。 fcntl函式 原型: 當第二個引數取不同的值時,fcntl有不同的功能: cmd=

python檔案相關函式,檔案資料的讀取寫入,一維二維資料的儲存,詞雲生成

Python檔案的開啟: 檔案的關閉: 檔案內容的讀取: 檔案的全文字操作: 遍歷文字的方法: 檔案的逐行操作: 資料的檔案寫

詳解 Python檔案IO操作

目錄 1 檔案輸入/輸出 1.1 使用write()寫文字檔案 1.2 使用read()、 readline()或者readlines()讀文字檔案 1.3 使用write()寫二進位制檔案   1.4 使用read()讀二進位制檔案 1.5 使用wi

檔案的讀寫及其相關

將軟體佈置在第三方電腦上會出現無法提前指定絕對路徑的情況,這回影響到後續的檔案讀寫;json檔案是資料交換的一種基本方法,為了減少重複造輪子,經行標準化程式碼。關於路徑: import os workspace=os.getcwd() path=os.path.join(workspace,'calibra

Python中的檔案IO操作(讀寫檔案、追加檔案

【注】:下述操作過程是結合多種網路方法,然後自己實踐的結果。寫在這裡,主要目的是加深記憶,也希望能幫助後來者 Python中檔案的讀寫包含三個步驟:開啟檔案,讀/寫檔案,關閉檔案。 檔案開啟之後必

C語言檔案IO相關操作

            I/O函式以三種基本的形式處理資料:單個數據、文字行和二進位制資料。1.fopen函式 (開啟一個特定的檔案)   形式: FILE  * fopen(char const* n

[轉]Python中的eval()、exec()及其相關函數

ron 1-1 代碼 project call s函數 錯誤 被調用 loader 剛好前些天有人提到eval()與exec()這兩個函數,所以就翻了下Python的文檔。這裏就來簡單說一下這兩個函數以及與它們相關的幾個函數,如gl

Python 檔案相關操作總結(讀寫 txt 檔案、複製檔案、獲得檔案列表等)

  本文平時程式設計中對於出現的 txt 的讀與寫入的相關方法彙總,因為是在學習過程中逐漸發現逐漸新增的,所以可能不會很全。但是我會保證持續的更新,使其趨於完善。   本片博文參考多篇博文彙總而成且在必要出添加了引用。 1. python獲取檔案路徑、檔名、字

python | 架構設計 】文字檔案編解碼相關

1、所有的字元與符號,均有其unicode碼 2、utf-8, utf-16.。。。均為unicode碼的儲存實現 3、沒有完全確定的方法可以判斷一個已經存在的文字檔案是採用哪種編碼方式落盤的 4、chardet是內建的探測資料的模組 5、在一般的web框架中,對資料

linux上的檔案管理類命令有哪些,常用的使用方法及其相關例項演示

Linux 一切皆檔案。個人理解 在linux下的命令操作都算是對檔案操作 那麼檔案管理命令類命令可以分為下面幾類 目錄操作: 特殊目錄解釋: . 代表此層目錄;.. 代表上一層目錄;- 代表前一個目錄;~ 代表當前使用者的主資料夾 也可以稱為家目錄

Python檔案和資料夾處理相關函式:刪除、複製、移動

這裡使用的是Python3.7版本,在Win10系統上執行 有關刪除檔案、資料夾的問題,網上有不少資料,但作為一個新手,感覺很多都介紹的模稜兩可,必須要自己測試過才能知道到底是怎麼回事,因此在這裡簡單介紹一下Python處理檔案和資料夾的函式。 目錄 刪除

檔案IO常用操作—python

1、檔案開啟操作—open open(file, mode=’r’, buffering=-1, encoding=’None’, errors=None, closed=True, opener=None) open操作位開啟一個檔案,並