天天看點

python 基礎 文本檔案的操作一  檔案介紹二 讀寫檔案簡單操作

一  檔案介紹

      1.什麼是檔案

狹義說:文本檔案;廣義說:超文本檔案, 圖檔,聲音,超連結,視訊。

       2.檔案的分類

檔案大體上可以分為兩類,檔案檔案和二進制檔案。

       3.檔案的作用

使用檔案的目的是把一些資料存儲存放起來。

        4.使用檔案的流程

我們操作一個檔案的流程一般是打開檔案,讀寫檔案,關閉檔案。通過程式操作檔案的流程也是這三步,首先打開檔案,然後讀寫檔案,最後關閉檔案

二 讀寫檔案簡單操作

基于檔案的操作   有如下方法    我們通過代碼會列舉介紹

讀取操作 r 以隻讀方式打開檔案。檔案的指針将會放在檔案的開頭。這是預設模式。
rb 以二進制格式打開一個檔案用于隻讀。檔案指針将會放在檔案的開頭。一般用于非文本檔案如圖檔等。
r+ 打開一個檔案用于讀寫。檔案指針将會放在檔案的開頭。
rb+ 以二進制格式打開一個檔案用于讀寫。檔案指針将會放在檔案的開頭。一般用于非文本檔案如圖檔等。
寫操作 w 打開一個檔案隻用于寫入。如果該檔案已存在則打開檔案,并從開頭開始編輯,即原有内容會被删除。如果該檔案不存在,建立新檔案。
wb 以二進制格式打開一個檔案隻用于寫入。如果該檔案已存在則打開檔案,并從開頭開始編輯,即原有内容會被删除。如果該檔案不存在,建立新檔案。一般用于非文本檔案如圖檔等。
w+ 打開一個檔案用于讀寫。如果該檔案已存在則打開檔案,并從開頭開始編輯,即原有内容會被删除。如果該檔案不存在,建立新檔案。
wb+ 以二進制格式打開一個檔案用于讀寫。如果該檔案已存在則打開檔案,并從開頭開始編輯,即原有内容會被删除。如果該檔案不存在,建立新檔案。一般用于非文本檔案如圖檔等。
a 打開一個檔案用于追加。如果該檔案已存在,檔案指針将會放在檔案的結尾。也就是說,新的内容将會被寫入到已有内容之後。如果該檔案不存在,建立新檔案進行寫入。
ab 以二進制格式打開一個檔案用于追加。如果該檔案已存在,檔案指針将會放在檔案的結尾。也就是說,新的内容将會被寫入到已有内容之後。如果該檔案不存在,建立新檔案進行寫入。
a+ 打開一個檔案用于讀寫。如果該檔案已存在,檔案指針将會放在檔案的結尾。檔案打開時會是追加模式。如果該檔案不存在,建立新檔案用于讀寫。
ab+ 以二進制格式打開一個檔案用于追加。如果該檔案已存在,檔案指針将會放在檔案的結尾。如果該檔案不存在,建立新檔案用于讀寫。

1  讀檔案   read

r

file = open('file/a.txt',mode = 'r')
ret = file.read()    #讀取檔案中的所有内容
print(ret)
file.close()

           

file叫做檔案句柄,或者檔案對象  用來操作檔案

第一個參數是檔案的路徑,第二個參數  mode=  是通路檔案的模型   r 表示讀  預設也是r 模式

rb    

file = open('121.jpg',mode='rb')
ret = file.read()
print(ret)
file.close()

"""
b'\xff\xd8\xff\xe1\x000Exif\x00\x00MM\x00*\x00\x00\x00\x08\x00\x01\x011\x00\x02\x00\x00\x00\x0e\x00\x00\x00\x1a\x00\x00\x00\x00www.meitu......
"""
           

r+

file = open('aa.txt',mode='r+')
ret = file.read()
print(ret)
file.close()

"""
abcdefg             #指會放在檔案的開頭,下次操作時時會從光标處開始
hijklmn
"""
           

2 寫操作  wirte

w      隻用于寫入

 注意  1檔案不存在,會建立檔案(不會建立目錄)  2  會覆寫掉源檔案的内容重新寫入 

file = open('1ji/bb.txt',mode='w')
file.write('zzz')
file.close()
           

w+   可用于讀寫  其他作用和w一緻

file = open('1ji/bb.txt',mode='w+')
file.write('zzzaaa')
ret = file.read()   #讀出的内容為空   因為光标的位置在最後   
print(ret)
file.close()
           

a    追加  和 w不同的是,a 所添加的内容是追加在檔案後邊的,不會覆寫之前檔案的内容   同樣,如果檔案不存在,則會建立一個新的檔案

file = open('1ji/bb.txt',mode='a')
file.write('zzzaaa')
file.close()
           

a+   a+可以進行讀寫  

file = open('1ji/bb.txt',mode='a+')
file.write('zzzaaa')
ret = file.read()   #讀出的内容為空   因為光标的位置在最後
print(ret)
file.close()
           

具體操作

read()

調用read()會一次性讀取檔案的全部内容,如果檔案有10G,記憶體就爆了,會容易導緻程式卡死,是以,要保險起見,可以反複調用read(size)方法,每次最多讀取size個位元組的内容

file = open('aa.txt')
ret = file.read(3)
print(ret)
file.close()
           

readline()

readline  每次讀取一行,并且自帶換行功能,每一行末尾會讀到\n

file = open('1ji/bb.txt')
ret = file.readline()
print(len(ret))
print(ret)
print(file.readline())
print(file.readline(3))
file.close()

"""
6
qwert

asdaa
"""
           

readlines()

一次性以行的形式讀取檔案的所有内容并傳回一個list,需要去周遊讀出來

file = open('1ji/bb.txt')
ret = file.readlines()
print(ret)

'''
['qwert\n', 'asdaa\n', 'ssssa']
'''
           

循環讀取

file句柄是一個可疊代的對象,是以,可以循環讀取檔案中的内容 每次隻讀一行

file = open('1ji/bb.txt')
for line in file:
    print(line)

qwert

asdaa

ssssa
           

write()

file = open('1ji/bb.txt',mode='w')
file.write('aaaaa')
file.write('bbb')
file.close()
           

writelines()

file.writelines(seq)  把seq的内容全部寫到檔案中(多行一次性寫入)

file = open('1ji/bb.txt',mode='w')
lst = ['aa\n','bb','cc']
file.writelines(lst)
file.close()

"""
aa
bbcc
"""
           

其他操作

1 tell

擷取檔案當中目前光标所在的位置

file = open('1ji/bb.txt',mode='r')
ret = file.read(3)
pos = file.tell()
print(pos)
print(ret)
file.close()

"""
4
aa
"""
           

seek()

seek 移動光标位置

參數:

offset  移動的長度(位元組)

whence  相對位置 0 從頭(預設),1從目前 2從末尾

file = open('1ji/bb.txt',mode='r')
print(file.read(3))
# file.seek(0,0)
file.seek(0,1)
# file.seek(0,2)  #空
ret= file.read(3)
print(ret)
file.close()
           

name 和 mode  

file.name  傳回  路徑

file.mode  傳回  檔案讀寫模式

file = open('1ji/bb.txt','r')
print(file.name)            #傳回路徑  1ji/bb.txt
print(file.mode)            # r
file.close()
           

with

使用with方式操作檔案,可以不用關閉檔案,會自動關閉檔案。

with open('1ji/bb.txt') as file:
    ret = file.read()
    print(ret)
           

亂碼  

python讀寫檔案時,預設使用的編碼為平台編碼,也就是gbk。

在pycharm中建立的檔案預設使用的是utf-8編碼

1,往pycharm中的1ji.bb中儲存内容

with open('1ji/bb.txt',mode='w',) as file:
    file.write('哈哈')
           
python 基礎 文本檔案的操作一  檔案介紹二 讀寫檔案簡單操作

2 向磁盤中檔案儲存内容能,不亂碼。

指定編碼

with open('1ji/bb.txt',mode='w',encoding='utf-8') as file:
    file.write('哈哈')
           
python 基礎 文本檔案的操作一  檔案介紹二 讀寫檔案簡單操作