python 檔案操作

2022-08-15 04:48:21 字數 3728 閱讀 8710

開啟檔案,得到檔案控制代碼並賦值給乙個變數

通過控制代碼對檔案進行操作

關閉檔案

f = open('chenli.txt') #開啟檔案

first_line = f.readline()

print('first line:',first_line) #讀一行print('我是分隔線'.center(50,'-'))

data = f.read()# 讀取剩下的所有內容,檔案大時不要用print(data) #列印讀取內容

f.close() #關閉檔案

2.2 檔案編碼

檔案儲存編碼如下

此刻錯誤的開啟方式

正確的開啟方式

#不指定開啟編碼,預設使用作業系統的編碼,windows為gbk,linux為utf-8,與直譯器編碼無關
f=open('chenli.txt',encoding='gbk') #在windows中預設使用的也是gbk編碼,此時不指定編碼也行
f.read()

1 檔案控制代碼 = open('檔案路徑', '模式')
開啟檔案時,需要指定檔案路徑和以何等方式開啟檔案,開啟後,即可獲取該檔案控制代碼,日後通過此檔案控制代碼對該檔案操作。

開啟檔案的模式有:

"+" 表示可以同時讀寫某個檔案

"b"表示以位元組的方式操作

注:以b方式開啟時,讀取到的內容是位元組型別,寫入時也需要提供位元組型別,不能指定編碼

flush原理:

檔案操作是通過軟體將檔案從硬碟讀到記憶體

寫入檔案的操作也都是存入記憶體緩衝區buffer(記憶體速度快於硬碟,如果寫入檔案的資料都從記憶體刷到硬碟,記憶體與硬碟的速度延遲會被無限放大,效率變低,所以要刷到硬碟的資料我們統一往記憶體的一小塊空間即buffer中放,一段時間後作業系統會將buffer中資料一次性刷到硬碟)

flush即,強制將寫入的資料刷到硬碟

滾動條:

import sys,time

for i in range(10):

sys.stdout.write('#')

sys.stdout.flush()

time.sleep(0.2)

注意:read(3)代表讀取3個字元,其餘的檔案內游標移動都是以位元組為單位如seek,tell,read,truncate

整理中1. open()語法

open(file[, mode[, buffering[, encoding[, errors[, newline[, closefd=true]]]]]])

open函式有很多的引數,常用的是file,mode和encoding

file檔案位置,需要加引號

mode檔案開啟模式,見下面3

buffering的可取值有0,1,>1三個,0代表buffer關閉(只適用於二進位制模式),1代表line buffer(只適用於文字模式),>1表示初始化的buffer大小;

encoding表示的是返回的資料採用何種編碼,一般採用utf8或者gbk;

errors的取值一般有strict,ignore,當取strict的時候,字元編碼出現問題的時候,會報錯,當取ignore的時候,編碼出現問題,程式會忽略而過,繼續執行下面的程式。

newline可以取的值有none, \n, \r, 」, 『\r\n',用於區分換行符,但是這個引數只對文字模式有效;

closefd的取值,是與傳入的檔案引數有關,預設情況下為true,傳入的file引數為檔案的檔名,取值為false的時候,file只能是檔案描述符,什麼是檔案描述符,就是乙個非負整數,在unix核心的系統中,開啟乙個檔案,便會返回乙個檔案描述符。

2. python中file()與open()區別

兩者都能夠開啟檔案,對檔案進行操作,也具有相似的用法和引數,但是,這兩種檔案開啟方式有本質的區別,file為檔案類,用file()來開啟檔案,相當於這是在構造檔案類,而用open()開啟檔案,是用python的內建函式來操作,建議使用open

3. 引數mode的基本取值

character

meaning

『r'open for reading (default)

『w'open for writing, truncating the file first

『a'『b'

binary mode

『t'text mode (default)

『+'open a disk file for updating (reading and writing)

『u'universal newline mode (for backwards compatibility; should not be used in new code)

r、w、a為開啟檔案的基本模式,對應著唯讀、只寫、追加模式;

b、t、+、u這四個字元,與以上的檔案開啟模式組合使用,二進位制模式,文字模式,讀寫模式、通用換行符,根據實際情況組合使用、

常見的mode取值組合

1 r或rt 預設模式,文字模式讀

2 rb 二進位制檔案

3

4 w或wt 文字模式寫,開啟前檔案儲存被清空

5 wb 二進位制寫,檔案儲存同樣被清空

6

7 a 追加模式,只能寫在檔案末尾

8 a+ 可讀寫模式,寫只能寫在檔案末尾

9

10 w+ 可讀寫,與a+的區別是要清空檔案內容

11 r+ 可讀寫,與a+的區別是可以寫到檔案任何位置

with open('a.txt','w') as f:

pass

with open('a.txt','r') as read_f,open('b.txt','w') as write_f:

data=read_f.read()

write_f.write(data)

import os

with open('a.txt','r',encoding='utf-8') as read_f,\

open('.a.txt.swap','w',encoding='utf-8') as write_f:

for line in read_f:

if line.startswith('hello'):

line='哈哈哈\n'

write_f.write(line)

os.remove('a.txt')

os.rename('.a.txt.swap','a.txt')

python 檔案操作

簡明 python 教程 中的例子,python 執行出錯,用open代替file 可以執行。poem programming is fun when the work is done if you wanna make your work also fun use python f open e ...

python檔案操作

1,將乙個路徑名分解為目錄名和檔名兩部分 a,b os.path.split c 123 456 test.txt print a print b 顯示 c 123 456 test.txt 2,分解檔名的副檔名 a,b os.path.splitext c 123 456 test.txt pri...

Python 檔案操作

1.開啟檔案 如下 f open d test.txt w 說明 第乙個引數是檔名稱,包括路徑 第二個引數是開啟的模式mode r 唯讀 預設。如果檔案不存在,則丟擲錯誤 w 只寫 如果檔案 不存在,則自動建立檔案 a 附加到檔案末尾 r 讀寫 如果需要以二進位制方式開啟檔案,需要在mode後面加上...