Python 9 檔案與檔案系統

2021-10-23 11:27:19 字數 2268 閱讀 8587

檔案與檔案系統

開啟檔案

open(file, mode='r', buffering=none, encoding=none, errors=none, newline=none, closefd=true)

開啟模式

執行操作

『r』以唯讀方式開啟檔案,檔案的指標將會放在檔案的開頭

『w』開啟乙個檔案只用於寫入。如果該檔案已存在則開啟檔案,並從開頭開始編輯,即原有內容會被刪除;如果該檔案不存在,建立新檔案。

『x』寫模式,新建乙個檔案,如果該檔案已存在則會報錯

『a』追加模式,開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾,新的內容將會被寫入到已有內容之後;如果該檔案不存在,建立新檔案進行寫入

『b』『t』

以文字模式開啟(預設),一般用於文字檔案,如txt

『+』可讀寫模式(可新增到其它模式中使用)

檔案物件方法

f =

open

('將進酒.txt'

,'r'

) line = f.readline(

)print

(line)

# 君不見,黃河之水天上來,奔流到海不復回。

line = f.readline(

)print

(line)

# 君不見,高堂明鏡悲白髮,朝如青絲暮成雪。

f.seek(0,

0)line = f.readline(

)print

(line)

# 君不見,黃河之水天上來,奔流到海不復回。

f.close(

)

f =

open

('workfile.txt'

,'wb+'

)print

(f.write(b'0123456789abcdef'))

# 16

print

(f.seek(5)

)# 5

print

(f.read(1)

)# b'5'

print

(f.seek(-3

,2))

# 13

print

(f.read(1)

)# b'd'

簡潔的 with 語句

os 模組中關於檔案/目錄常用的函式

不同作業系統底層對於檔案系統訪問的工作原理是不一樣的,os(operation system)模組用於選擇正確的模組並呼叫,不需要考慮作業系統的差異

序列化與反序列化

python 的pickle模組實現了基本的資料序列和反序列化

通過pickle模組的序列化操作能夠將程式中執行的物件資訊儲存到檔案中去,永久儲存;

通過pickle模組的反序列化操作,能夠從檔案中建立上一次程式儲存的物件。

最常用的函式為:

練習題

開啟中文字元的文件時,會出現亂碼,python自帶的開啟檔案是否可以指定文字編碼?還是只能用相關函式?

open方法可以指定要開啟檔案的編碼方式

編寫程式查詢最長的單詞

"""

input file

test.txt

output file

['general-purpose,', 'object-oriented,']

"""def

longest_word

(filename)

: dic =

f =open

(filename,

'r')

lines = f.readlines(

)for line in lines:

line = line.split(

',')

for charac in line:

dic[charac]

=len

(charac)

ma =

max(dic.values())

keys =

for key, value in dic.items():

if value == ma:

f.close(

)return keys

Python9 檔案操作

檔案的開啟 open 1.py r r 以唯讀開啟檔案 w 開啟檔案用於寫入 a 開啟乙個檔案追加 rb,wb,ab 以二進位制方式操作 r w a 開啟檔案可讀寫 rb wb ab 以二進位制方式開啟檔案可讀寫 close 關閉檔案操作 read 讀取檔案 內可放要讀的位元組數,如 read 1 ...

9 檔案與檔案系統

1.讀寫檔案 open 方法用於開啟乙個檔案,並返回檔案物件 注意 1 使用 open 方法一定要保證關閉檔案物件,即呼叫 close 方法。2 open 函式常用形式是接收兩個引數 檔名 file 和模式 mode open file mode r fo open r.txt wb print 檔...

Day 9 檔案與檔案系統

在寫入其他型別的物件之前,需要先把它們轉化為字串 在文字模式下 或者位元組物件 在二進位制模式下 f.read size 檔案末尾 f.read 將返回乙個空字串 f.readline 從文中讀取 for line in f print line,end this is the first line...