python學習筆記 file

2021-10-04 16:09:37 字數 4749 閱讀 5383

open函式

open函式負責開啟檔案,帶有很多引數;第乙個引數:必須有檔案的路徑和名稱

mode

表明檔案用什麼方式開啟

r以唯讀方式開啟

w寫方式開啟,會覆蓋以前的內容

x建立方式開啟,如檔案已存在,報錯ab

binary方式,二進位制方式寫入

t文字方式開啟

+可讀寫

#例子

#開啟檔案,用寫的方式

#f稱之為檔案控制代碼

#r表示後面的字串內容不需要轉義

f =open

(r"test01.txt"

,"w"

)#檔案開啟後必須關閉

f.close(

)#此案例說明,以寫方式開啟檔案,預設是如果沒有檔案,則建立

with語句

with語句使用的技術是一種成為上下文管理協議的技術(contextmanagementprotocal)自動判斷檔案的作用域,自動關閉不在使用的檔案開啟的檔案控制代碼

#with語句案例

with

open

(r"test.txt"

,"r"

)as f:

pass

#下面語句塊開始對檔案f進行操作

#在本模組中不需要再使用close關閉檔案f

#with 案例

with

open

(r'test.txt'

,'r'

)as f:

#按行讀取內容

strline = f.readline(

)while strline:

print

(strline)

strline = f.readline(

)#list能用開啟的檔案作為引數,把檔案內每一行內容作為乙個元素

#以開啟的檔案f作為引數,建立list

with

open

(r'test.txt'

,'r'

)as f:

l =list

(f)for i in l:

print

(i)#read是按字元讀取檔案內容允許輸入引數決定讀取幾個字元,如果沒有指定,從當前位置讀取到結尾否則,從當前位置讀取指定個數字元

with

open

(r"test.txt"

,"r"

)as f:

strchar = f.read(

)#輸入引數決定讀取幾個字元

print

(len

(strchar)

)print

(strchar)

seek(offset,from)

移動檔案的讀取位置,也叫讀取指標

from的取值範圍

移動的單位是位元組 (byte)乙個漢字由若干個位元組,構成返回檔案只針對當前位置

#案例

#開啟檔案從第五個位元組開始讀取

#開啟後讀寫指標再0處,即檔案的開頭

with

open

(r"test.txt"

,"r"

)as f:

f.seek(x,0)

strchar = f.read(

)print

(strchar)

tell函式:用來顯示檔案讀寫指標的當前位置
with

open

(r"test.txt"

,"r"

)as f:

strchar = f.read(3)

pos =f.tell(

)while strchar:

print

(pos)

print

(strchar)

strchar = f.read(3)

pos =f.tell(

)#tell的返回結果的數字是以位元組為單位的,read則是以字元為單位

write:檔案的寫操作

write(str):把字串寫入檔案

writelines(str):很多行字串寫入檔案可以以list形式寫入

區別:

with

open

(r"test.txt"

,"a"

)as f:

f.write(

str)

持久化 pickle

序列化(持久化,落地):把程式執行中的資訊儲存再磁碟上,可以儲存一些結構化的東西

反序列化:序列化的逆過程

pickle:python提供的序列化的模組

例子(序列化)

import pickle

age =

19with

open

(r""

,"wb"

)as f:

pickle.dump(age, f)

例子(反序列化)

import pickle

age =

19with

open

(r""

,"rb"

)as f:

age = pickle.load(f)

print

(age)

持久化-shelve

持久化工具,類似字典,用kv對儲存資料,訪問方式跟字典類似

shelve也可以使用with上下文管理環境

主要用法:open, close

#案例

import shelve

shv = shelve.

open

(r"shv.db"

)shv=

shv.close(

)#通過以上案例發現,shelve自動建立的不僅僅是乙個shv.db檔案,還包括一些其他輔助檔案

#讀取案例(需要使用異常處理)

shv = shelve.

open

(r"shv.db"

)shv=

try:

print

(shv[

"one"])

except exception as e:

print

("有錯誤"

)finally

: shv.close(

)

shelve特性

不支援多個應用並行寫入(但可以讀取),為了解決這個問題,open的時候可以使用flag=r

寫回問題

shelve一般情況下不會等待持久化物件進行任何修改

解決方法:強制寫回:writeback = true

#案例

shv = shelve.

open

(r"shv.db"

, flag=

"r")

shv=

try:

k1 = shv[

"one"

]print

(k1)

except exception as e:

print

("有錯誤"

)finally

: shv.close(

)

#案例

shv = shelve.

open

(r"shv.db"

)shv=

try:

shv[

"one"]=

except exception as e:

print

("有錯誤"

)finally

: shv.close(

)shv = shelve.

open

(r"shv.db"

)try

: one = shv[

"one"

]print

(one)

except exception as e:

print

("有錯誤"

)finally

: shv.close(

)

#shelve 忘記寫回(資料不會儲存在資料庫中,只存在於記憶體中),需要強制寫回

shv = shelve.

open

(r"shv.db" writebake =

true

)#writebake = true為強制寫回

try:

k1 = shv[

'one'

]print

(k1)

#此時,一旦shelve.close,則內容還是存在於記憶體中,沒有寫回資料庫

k1 =[""

]=100finally

: shv.close(

)shv = shelve.

open

(r"shv.db"

)try

: k1 = shv[

'one'

]print

(k1)

finally

: shv.close(

)

linux學習筆記 file命令

file命令用來探測給定檔案的型別。file命令對檔案的檢查分為檔案系統,魔法幻術檢查和語言檢查3過程 語法 file 選項 引數 選項 b 列出辨識結果時,不顯示檔名稱 c 詳細顯示指令執行過程,便於排錯或分析程式的執行過程 f 名稱檔案 指定名稱檔案,其內容有乙個或多個檔名稱時,讓file依序辨...

複習File筆記

file類的建立和判斷 構造方法 file string pathname file string parent,string child 分別輸入父路徑和子路徑,建立物件 file file parent,string child 根據給定的父目錄物件,子路徑 成員方法 createnewfile...

Python學習(16)File 檔案 方法

file 物件使用 open 函式來建立,下表列出了 file 物件常用的函式 序號方法及描述 1file.close 關閉檔案。關閉後檔案不能再進行讀寫操作。2file.flush 重新整理檔案內部緩衝,直接把內部緩衝區的資料立刻寫入檔案,而不是被動的等待輸出緩衝區寫入。3file.fileno ...