日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python持久化存储文件操作

發(fā)布時(shí)間:2024/9/3 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python持久化存储文件操作 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、 文件操作介紹

日常中的數(shù)據(jù)存儲(chǔ)在紙上, 而計(jì)算機(jī)的數(shù)據(jù)存儲(chǔ)在哪里呢? —硬盤上

1. 文件的作用

一個(gè)程序在運(yùn)行過(guò)程中用了九牛二虎之力終于計(jì)算出了結(jié)果,試想一下如果不把這些數(shù)據(jù)存放起來(lái),相比重啟電腦之后,“哭都沒地方哭了”。 默認(rèn)數(shù)據(jù)是加載到內(nèi)存中,結(jié)果也是保存到內(nèi)存中, 程序執(zhí)行結(jié)束,所有的數(shù)據(jù)釋放。

2.文件的打開讀寫關(guān)閉

文件的打開模式

要讀取二進(jìn)制文件,比如圖片、視頻等等,用’rb’, ‘wb’, 'ab’等模式打開文件即可

# 1.打開文件 """ mode:r:只能讀文件w:只能寫入(清空文件內(nèi)容)a+:讀寫(追加) """ f = open('doc/hello.txt',mode='a') # 2.文件的讀寫操作 f.write('\nhello python') # 3. 文件的關(guān)閉 f.close()

文件最初內(nèi)容:

代碼運(yùn)行結(jié)果:

3.File對(duì)象的屬性:

4.File對(duì)象的常用方法

5. 指針定位

seek(offset, from)有2個(gè)參數(shù): offset:偏移量 from:方向
0:表示文件開頭;
1:表示當(dāng)前位置;
2:表示文件末尾
1). 把位置設(shè)置為:從文件開頭,偏移5個(gè)字節(jié)
2). 把位置設(shè)置為:文件最開始
3). 把位置設(shè)置為:文件最末尾

6.文件的關(guān)閉

方法一: 調(diào)用close()方法關(guān)閉文件。文件使用完畢后必須關(guān)閉,因?yàn)槲募?duì)象會(huì)占用操作系統(tǒng)的資源,
并且操作系統(tǒng)同一時(shí)間能打開的文件數(shù)量也是有限的:

方法二: Python引入了with語(yǔ)句來(lái)自動(dòng)幫我們調(diào)用close()方法

""" with 語(yǔ)句 """ with open('doc/test.txt','w+') as f: #打開一個(gè)文件,如果不存在的話創(chuàng)建w+ 保存為ff.write('hello world\n') #寫入文件f.seek(0,0) #移動(dòng)指針位置到文件最開始#f.seek(0,2) #移動(dòng)指針位置到文件末尾print("當(dāng)前指針位置為:",f.tell())print(f.read()) #讀取文件內(nèi)容

代碼運(yùn)行結(jié)果:

二、os模塊

os,語(yǔ)義為操作系統(tǒng),處理操作系統(tǒng)相關(guān)的功能,可跨平臺(tái)。 比如顯示當(dāng)前目錄下所有文件/刪除某個(gè)文件/獲取文件大小……

1.關(guān)于操作系統(tǒng)

import os import platform # 1.獲取操作系統(tǒng)類型 print(os.name) # 2.獲取主機(jī)信息,windows系統(tǒng)使用platform模塊,如果是linux系統(tǒng)直接使用os模塊 """ try: 可能出現(xiàn)報(bào)錯(cuò)的代碼 excpt:可能出現(xiàn)異常,執(zhí)行的內(nèi)容 finally:是否有異常,都會(huì)執(zhí)行的內(nèi)容 """ try:uname = os.uname() except Exception:uname = platform.uname() finally:print(uname) # 3.獲取系統(tǒng)的環(huán)境變量 envs = os.environ # os.environ.get('PASSWORD') 通過(guò)key值獲取環(huán)境變量對(duì)應(yīng)的value值 print(envs)

代碼運(yùn)行結(jié)果:

2.關(guān)于路徑

# 1.判斷是否為絕對(duì)路徑 print(os.path.isabs('D:/python/運(yùn)維項(xiàng)目/doc/test.txt')) print(os.path.isabs('test.txt')) # 2.生成絕對(duì)路徑 print(os.path.abspath('D:/python/運(yùn)維項(xiàng)目/doc/test.txt')) print(os.path.abspath('test.txt')) # 3.目錄名和文件名的拼接 #os.path.dirname獲取某個(gè)文件對(duì)應(yīng)的目錄名 #__file__是指當(dāng)前文件 #join 拼接,將目錄和文件名拼接起來(lái) BASE_DIR = os.path.dirname(__file__) setting_file = os.path.join(BASE_DIR,'dev.conf') print(setting_file) # 4.獲取目錄名或者文件名 filename = 'D:/python/運(yùn)維項(xiàng)目/doc/test.txt' print(os.path.basename(filename)) print(os.path.dirname(filename))

代碼運(yùn)行結(jié)果:

3.關(guān)于文件創(chuàng)建和刪除

os模塊中的rename()可以完成對(duì)文件的重命名操作。
rename(需要修改的文件名, 新的文件名)

os模塊中的remove()可以完成對(duì)文件的刪除操作
remove(待刪除的文件名)

# 1.創(chuàng)建目錄/刪除目錄 # mkdir -p sun/sdasd os.mkdirs('sun/ss') #遞歸創(chuàng)建目錄 os.mkdir('sun') #創(chuàng)建單個(gè)目錄 os.rmdir('sun') #刪除目錄 # 2.創(chuàng)建文件/刪除文件 #win不支持 os.mknod('sun/ok.txt') os.remove('sun/ok.txt') # 3.文件重命名(mv) os.rename('sun/ok.txt','sun/test.txt') # 4.判斷文件或者目錄是否存在 print(os.path.exists('test.txt')) # 5.分離后綴名和文件名 print(os.path.splitext('hello.txt')) print(os.path.split('hello.txt')) # 6.將目錄名和文件名分離 print(os.path.split('D:/python/運(yùn)維項(xiàng)目/doc/test.txt'))

三、json模塊詳解

JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。它基于ECMAScript的一個(gè)子集。

JSON采用完全獨(dú)立于語(yǔ)言的文本格式,但是也使用了類似于C語(yǔ)言家族的習(xí)慣(包括C、C++、Java、JavaScript、Perl、Python等)。

這些特性使JSON成為理想的數(shù)據(jù)交換語(yǔ)言。易于人閱讀和編寫,同時(shí)也易于機(jī)器解析和生成(一般用于提升網(wǎng)絡(luò)傳輸速率)。

python類型數(shù)據(jù)和JSON數(shù)據(jù)格式互相轉(zhuǎn)換規(guī)則


python 中str類型到JSON中轉(zhuǎn)為unicode類型,None轉(zhuǎn)為null,dict對(duì)應(yīng)object;
pyhton中的集合不能轉(zhuǎn)成json格式。

1.將python對(duì)象編碼成json字符串

import json # 1.將python對(duì)象編碼成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('存儲(chǔ)成功') print(json_str,type(json_str))

代碼運(yùn)行結(jié)果:

2.將json字符串解碼成python對(duì)象

with open('doc/test.json') as f:python_obj = json.load(f)print(python_obj,type(python_obj))

代碼運(yùn)行結(jié)果:

四、pandas模塊

1.打開交互式terminal安裝模塊

pip install pandas -i https://pypi.douban.com/simple

2.安裝對(duì)excel文件操作所需要的模塊

>pip install openpyxl -i https://pypi.douban.com/simple

3.轉(zhuǎn)換代碼:

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'}, ] #轉(zhuǎn)換數(shù)據(jù)類型 df = pandas.DataFrame(hosts) print(df) #存儲(chǔ)到excle文件中 df.to_excel('doc/hosts.xlsx')

代碼運(yùn)行結(jié)果:

生成的excel文件

五、詞頻統(tǒng)計(jì)練習(xí)題

""" 技能需求:1. 文件操作2. 字符串的分割操作3. 字典操作 功能需求:詞頻統(tǒng)計(jì)1. 讀取song.txt文件 with open(filename) as f: content=f.read()2. 分析文件中的每一個(gè)單詞,統(tǒng)計(jì)每個(gè)單詞出現(xiàn)的次數(shù)。{"hello":2, "python":1, "java":1}- 分析文件中的每一個(gè)單詞content = "hello python hello java"words = content.split()- 統(tǒng)計(jì)每個(gè)單詞出現(xiàn)的次數(shù)- {"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) # 統(tǒng)計(jì)出現(xiàn)次數(shù)最高的五個(gè)單詞 from collections import Counter counter = Counter(i) result = counter.most_common(5) print(result)

總結(jié)

以上是生活随笔為你收集整理的python持久化存储文件操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。