python持久化存储文件操作
一、 文件操作介紹
日常中的數據存儲在紙上, 而計算機的數據存儲在哪里呢? —硬盤上
1. 文件的作用
一個程序在運行過程中用了九牛二虎之力終于計算出了結果,試想一下如果不把這些數據存放起來,相比重啟電腦之后,“哭都沒地方哭了”。 默認數據是加載到內存中,結果也是保存到內存中, 程序執行結束,所有的數據釋放。
2.文件的打開讀寫關閉
文件的打開模式
要讀取二進制文件,比如圖片、視頻等等,用’rb’, ‘wb’, 'ab’等模式打開文件即可
文件最初內容:
代碼運行結果:
3.File對象的屬性:
4.File對象的常用方法
5. 指針定位
seek(offset, from)有2個參數: offset:偏移量 from:方向
0:表示文件開頭;
1:表示當前位置;
2:表示文件末尾
1). 把位置設置為:從文件開頭,偏移5個字節
2). 把位置設置為:文件最開始
3). 把位置設置為:文件最末尾
6.文件的關閉
方法一: 調用close()方法關閉文件。文件使用完畢后必須關閉,因為文件對象會占用操作系統的資源,
并且操作系統同一時間能打開的文件數量也是有限的:
方法二: Python引入了with語句來自動幫我們調用close()方法
""" with 語句 """ with open('doc/test.txt','w+') as f: #打開一個文件,如果不存在的話創建w+ 保存為ff.write('hello world\n') #寫入文件f.seek(0,0) #移動指針位置到文件最開始#f.seek(0,2) #移動指針位置到文件末尾print("當前指針位置為:",f.tell())print(f.read()) #讀取文件內容代碼運行結果:
二、os模塊
os,語義為操作系統,處理操作系統相關的功能,可跨平臺。 比如顯示當前目錄下所有文件/刪除某個文件/獲取文件大小……
1.關于操作系統
import os import platform # 1.獲取操作系統類型 print(os.name) # 2.獲取主機信息,windows系統使用platform模塊,如果是linux系統直接使用os模塊 """ try: 可能出現報錯的代碼 excpt:可能出現異常,執行的內容 finally:是否有異常,都會執行的內容 """ try:uname = os.uname() except Exception:uname = platform.uname() finally:print(uname) # 3.獲取系統的環境變量 envs = os.environ # os.environ.get('PASSWORD') 通過key值獲取環境變量對應的value值 print(envs)代碼運行結果:
2.關于路徑
# 1.判斷是否為絕對路徑 print(os.path.isabs('D:/python/運維項目/doc/test.txt')) print(os.path.isabs('test.txt')) # 2.生成絕對路徑 print(os.path.abspath('D:/python/運維項目/doc/test.txt')) print(os.path.abspath('test.txt')) # 3.目錄名和文件名的拼接 #os.path.dirname獲取某個文件對應的目錄名 #__file__是指當前文件 #join 拼接,將目錄和文件名拼接起來 BASE_DIR = os.path.dirname(__file__) setting_file = os.path.join(BASE_DIR,'dev.conf') print(setting_file) # 4.獲取目錄名或者文件名 filename = 'D:/python/運維項目/doc/test.txt' print(os.path.basename(filename)) print(os.path.dirname(filename))代碼運行結果:
3.關于文件創建和刪除
os模塊中的rename()可以完成對文件的重命名操作。
rename(需要修改的文件名, 新的文件名)
os模塊中的remove()可以完成對文件的刪除操作
remove(待刪除的文件名)
三、json模塊詳解
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它基于ECMAScript的一個子集。
JSON采用完全獨立于語言的文本格式,但是也使用了類似于C語言家族的習慣(包括C、C++、Java、JavaScript、Perl、Python等)。
這些特性使JSON成為理想的數據交換語言。易于人閱讀和編寫,同時也易于機器解析和生成(一般用于提升網絡傳輸速率)。
python類型數據和JSON數據格式互相轉換規則
python 中str類型到JSON中轉為unicode類型,None轉為null,dict對應object;
pyhton中的集合不能轉成json格式。
1.將python對象編碼成json字符串
import json # 1.將python對象編碼成json字符串 users = {'name':'sun','age':18,'city':'西安'} json_str = json.dumps(users) with open('doc/test.json','w') as f:json.dump(users, f , ensure_ascii=False,indent=4)print('存儲成功') print(json_str,type(json_str))代碼運行結果:
2.將json字符串解碼成python對象
with open('doc/test.json') as f:python_obj = json.load(f)print(python_obj,type(python_obj))代碼運行結果:
四、pandas模塊
1.打開交互式terminal安裝模塊
pip install pandas -i https://pypi.douban.com/simple2.安裝對excel文件操作所需要的模塊
>pip install openpyxl -i https://pypi.douban.com/simple3.轉換代碼:
import pandashosts = [{'host':'1.1.1.1', 'hostname':'server1', 'idc':'ali'},{'host':'1.1.1.2', 'hostname':'server2', 'idc':'huawei'},{'host':'1.1.1.3', 'hostname':'server3', 'idc':'tengxun'},{'host':'1.1.1.4', 'hostname':'server4', 'idc':'wangyi'}, ] #轉換數據類型 df = pandas.DataFrame(hosts) print(df) #存儲到excle文件中 df.to_excel('doc/hosts.xlsx')代碼運行結果:
生成的excel文件
五、詞頻統計練習題
""" 技能需求:1. 文件操作2. 字符串的分割操作3. 字典操作 功能需求:詞頻統計1. 讀取song.txt文件 with open(filename) as f: content=f.read()2. 分析文件中的每一個單詞,統計每個單詞出現的次數。{"hello":2, "python":1, "java":1}- 分析文件中的每一個單詞content = "hello python hello java"words = content.split()- 統計每個單詞出現的次數- {"hello":2, "python":1, "java":1}# words = ['hello', 'python', 'hello', 'java']""" with open('doc/song.txt') as f: content=f.read() words = content.split() result = {} for i in words:if i not in result:result[i] =1else:result[i] +=1 import pprint pprint.pprint(result) # 統計出現次數最高的五個單詞 from collections import Counter counter = Counter(i) result = counter.most_common(5) print(result)總結
以上是生活随笔為你收集整理的python持久化存储文件操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python的字典与集合
- 下一篇: python模块与包