溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python文件操作詳解

發(fā)布時間:2020-09-13 17:21:47 來源:網(wǎng)絡(luò) 閱讀:3071 作者:奇貓 欄目:編程語言

文件操作是編程中必不可少的,配置文件,數(shù)據(jù)存儲都是對文件操作;按文件操作與格式主要內(nèi)容如下圖:
python文件操作詳解

文件基本操作為打開,讀取,寫入,關(guān)閉,我們按這個過程來詳解講解。

1.一個例子搞定打開,讀取與關(guān)閉:

準備工作:

1>新建文件:E:\workdir\readme.txt(或者自己準備一個其他文本文件);
2>文件添加一行內(nèi)容:this is test

直接上代碼,有個基本認識:

#文件路徑
path = r'E:\workdir\readme.txt'
#打開文件
f = open(path)
#讀取文件
txt = f.read()
print(txt)
#關(guān)閉文件
f.close()

輸出結(jié)果:this is test;
感覺文件操作太簡單了。

那么問題來了:如果文件不存在如何創(chuàng)建文件?如何寫文件?這種方式能夠?qū)懭雴幔?br/>我們來看文件打開方式。

2 文件打開方式詳解:

2.1 open方法詳解:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

返回一個文件IO對象,如果文件不存在或者打開出錯觸發(fā)異常;
主要參數(shù):

參數(shù) 說明
file 文件路徑
mode 打開方式,默認只讀方式
encoding 打開文件編碼格式

其他參數(shù)暫時使用默認值。

我們再來看下文件打開方式:
打開方式 說明
'r' 只讀方式 ,不能寫入
'w' 只寫方式打開,文件不存在創(chuàng)建文件,文件存在截斷文件
'a' 只寫方式打開,如果文件存在,再文件尾部開始寫入
'+' 讀寫方式打開
'b' 二進制方式打開,例如圖片; 'rb','wb','ab',上面操作類似

2.2 打開方式測試:

工作目錄:'E:\workdir';

case1:文件不存在創(chuàng)建文件:
#該文件不存在
wfpath = r'E:\workdir\testw.txt'
f = open(wfpath, 'w')
#寫入一行
f.write('python')
f.close()

查看E:\workdir\,創(chuàng)建文件testw.txt;

case2:文件存在只寫方式打開:

準備工作:
1>在'E:\workdir'下創(chuàng)建文件:test1.txt;
2>寫入一行文本:'abcd1234';

測試:

#文件存在
fpath = r'E:\workdir\test1.txt'
f = open(fpath, 'w')
f.close()

查看r'E:\workdir\test1.txt',內(nèi)容被清空;

case3:只寫方式打開,能否讀?。?/h5>
fpath = r'E:\workdir\test1.txt'
#文件只寫方式打開
f = open(fpath, 'w')
#進行讀取
f.read()
f.close()

結(jié)果:

UnsupportedOperation                      Traceback (most recent call last)
<ipython-input-13-30cd4bdc05f3> in <module>
      3 fpath = r'E:\workdir\test1.txt'
      4 f = open(fpath, 'w')
----> 5 f.read()
      6 f.close()

UnsupportedOperation: not readable

只寫方式打開不能讀取。

case4:只寫方式打開,尾部開始寫入:

使用'w'方式打開文件,文件會被裁剪,如何在尾部追加數(shù)據(jù)?使用'a'模式:

#先寫入abc,關(guān)閉重新打開文件,在寫入123
fpath = r'E:\workdir\testa.txt'
#只寫方式打開
f = open(fpath, 'w')
f.write('abc')
f.close()
#追加方式打開,文件尾開始寫入
fpath = r'E:\workdir\testa.txt'
f = open(fpath, 'a')
f.write('123')
f.close()

文件內(nèi)容:abc123;

cast5:讀寫方式打開:
模式 說明
'r+' 讀寫方式打開,從文件頭開始讀寫
'w+' 讀寫方式打開,文件被清空
'a+' 追加方式讀寫打開,從文件尾開始讀寫
#文件路徑,文件內(nèi)容:'this is test'
path = r'E:\workdir\readme.txt'
#打開文件
f = open(path, 'r+')
line = f.read()
print(line)
#寫入文本
f.write('end')
#關(guān)閉文件,文件尾寫入end
f.close()

結(jié)果:讀取文件內(nèi)容,并在文件尾插入end;
大家可以嘗試測試另外兩種讀寫模式。

3.文件讀取

讀取文件方法:

方法 說明
read(size=-1, /) 讀取指定字節(jié)或者讀取完成,默認讀取完
readline(size=-1, /) 讀取一行
readlines(hint=-1, /) 讀取多行,默認讀取完,返回每行組成列表

環(huán)境準備:readme.txt中添加四行:

1:語法
2:環(huán)境
3:邏輯處理
4:數(shù)據(jù)結(jié)構(gòu)

case1:一次讀取完

path = r'E:\workdir\readme.txt'
f = open(path)
lines = f.read()
print(lines)

case2:逐行讀取

path = r'E:\workdir\readme.txt'
f = open(path)
while True:
    #讀取完,讀取內(nèi)容為''
    line = f.readline()
    if line:
        print(line, end='')
    else:
        break

case3:按行一次讀完

path = r'E:\workdir\readme.txt'
f = open(path)
lines = f.readlines()
print(lines)

lines為列表;

case4:使用for循環(huán)逐行讀?。?/h4>

如果文件過大,一次讀取會占用大量內(nèi)存,所以一般情況下,我們使用for遍歷文件:

path = r'E:\workdir\readme.txt'
f = open(path)
for line in f:
    print(line, end='')

4.文件寫入:

方法 說明
write(text, /) 寫入字符串,返回寫入字節(jié)數(shù)
writelines(lines, /) 寫入多行

實際操作:

#‘\n’換行符
info = ['java\n','c++\n']
#只寫方式打開文件
path = r'E:\workdir\testw.txt'
f = open(path,'w')
#寫入一行
f.write('python'+'\n')
#寫入多行
f.writelines(info)
f.close()

到這里文件基本操作我們就介紹完了,在專欄中我們再來看如何使用。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI