持久化檔案操作

2021-10-10 00:27:01 字數 3695 閱讀 4495

python對於檔案都採用預設的操作步驟:開啟——操作——關閉,對檔案進行操作之後一定要關閉它,關閉檔案將對檔案釋放控制權使檔案恢復儲存狀態,此時另乙個程序可以操作這個檔案。

檔案的常見開啟方式:

方式意義

r唯讀開啟

w只寫開啟(如果檔案不存在,則會建立改檔案;檔案存在,則會清空該檔案的內容)rba

用於對該檔案新增內容

+通常和w或者a一起使用,表示讀寫開啟改檔案

開啟格式:f = open('檔名',』開啟方式『)

關閉格式:f.close()

os模組

作用os.name

檢視當前的作業系統 (windows: nt, linux:posix)

os.uname

檢視當前作業系統的詳細資訊,如果在windows中執行,則需要import platform

os.mkdir()

建立目錄

os.makedir()

可以建立多層目錄,等價於(mkdir -p )

os .rmdir()

刪除目錄

os.mknod()

建立檔案(windows中不支援)

os.rename()

對檔案重新命名

os.remove()

刪除檔案

os.path.exists()

判斷檔案是否存在,返回true是存在,false表示不存在

os.path.splitext()

分離檔名和字尾名

os.path.split()

分離目錄名和檔名()

os.path.getsize()

檢視檔案的大小

os.path.abspath()

顯示改檔案的絕對路徑

注:python 中的集合不能轉成json資料型別

json.load()

示例:

**:

with

open

('hello.txt'

,'r'

, encoding=

'utf-8'

)as f:

print

('檔案內容:\n'

, f.read())

f.seek(0,

0)for i in f:

ifnot i.startswith(

'#')

:print

('檔案中不以#開頭的內容:'

, i)

測試:

1). 必須使用自定義函式,完成對程式的模組化

2). 學生資訊至少包含:姓名、年齡、學號,除此以外可以適當新增

3). 必須完成的功能:新增、刪除、修改、查詢、退出

**:

import json

import os

import pprint

defrewrite

(x, filename=

'學生資訊檔案'):

with

open

(filename, mode=

'w')

asfile

: json.dump(x,

file

, indent=

4, ensure_ascii=

false

)while

true

: act =

input

('請輸入你想完成的操作(新增|刪除|更改|檢視|退出):'

)if os.path.exists(

'學生資訊檔案'):

if os.path.getsize(

'學生資訊檔案')!=

0:with

open

('學生資訊檔案'

, mode=

'r')

as f:

d = json.load(f)

else

: d =

else

: d =

if act ==

'新增'

: number =

input

('學號:'

)if number not

in d.keys():

name =

input

('學生姓名:'

) age =

int(

input

('年齡:'))

d.update(})

rewrite(d)

print

('學號為%s的學生資訊新增成功'

% number)

else

:print

('學號為%s的學生資訊在檔案中已經存在'

% number)

elif act ==

'刪除'

: number =

input

('輸入你想要刪除的學生學號:'

)if number in d.keys():

d.pop(number)

rewrite(d)

print

('學號為%s的學生資訊已經被刪除'

% number)

else

:print

('學號為%s的學生資訊不存在'

% number)

elif act ==

'更改'

: number =

input

('請輸入你要修改的學生學號:'

)if number in d.keys():

kind =

input

('請輸入你要修改學號為%s的什麼資訊(姓名|年齡):'

% number)

content =

input

('修改%s為:'

% kind)

d[number]

.update(

) rewrite(d)

print

('學號為%s的學生資訊已經被更改'

% number)

else

:print

('學號為%s的學生資訊不存在'

% number)

elif act ==

'檢視'

: pprint.pprint(d)

elif act ==

'退出'

:break

else

:print

('請輸入正確的操作'

)

測試:

持久化 檔案

一 檔案 長久儲存資訊的一種資料資訊集合 開啟檔案,用寫的方式 r表示後面字串內容不需要轉義 f稱之為檔案控制代碼 f open r test01.txt w 檔案開啟後必須關閉 f.close 1.with語句開啟檔案 用with語句開啟檔案,不需要關閉 with open r test01.tx...

AOF持久化操作

持久化操作 時點快照 rdb除了時點快照,還進行了持久化的命令,rdb的優點是不占用記憶體 缺點是會丟失資料,並且會造成阻塞。aof 追加新的指令,而不是覆蓋。aof可以做到實時的進行備份,不丟失任何資料,可允許範圍內的丟失。buffer緩衝區 aof寫到緩衝區是寫到系統核心的緩衝區,先把內容寫到緩...

Redis持久化操作

rdb 在指定的時間間隔內,將記憶體中的資料集快照寫入磁碟,它恢復時,是將快照檔案直接讀到記憶體裡。aof是以日誌的方式記錄寫操作,備份如何進行的 redis會單獨建立乙個子程序來進行初始化,會先將資料寫入到乙個臨時檔案內,待持久化過程都結束了,再用這個臨時檔案替換上次持久化好的檔案,整個過程中,主...