文件的三種打開方式


文件打開的三種方式

文件操作的基礎模式有三種(默認的操作為r模式):

  • r模式為read
  • w模式為write
  • a模式為append

文件讀寫內容的格式有兩種(默認的讀寫內容的模式為b模式):

  • t模式為text
  • b模式為bytes

需要注意的是: t、b這兩種模式均不能單獨使用,都需要與r/w/a之一連用。

一、文件打開模式值R模式

r:read,只讀模式,只能讀不能寫,文件不存在時報錯。

f = open('32.text',mode='r')
f.write()
f.close()
#rt :read by text
#windows的操作系統默認編碼為gbk,因此需要用的就是utf-8編碼
f = open('32.text',mode='r',encoding='utf8')
data = f.read()
print(data)
print(f"type(data):{type(data)}")
f.close()
aaa
bbb
ccc
nick最帥嗎
type(data): <class 'str'>
# rb: read by bytes
f = open('32.txt', mode='rb')
data = f.read()
print(data)
print(f"type(data): {type(data)}")
f.close()
b'aaa\nbbb\nccc\nnick\xe6\x9c\x80\xe5\xb8\x85\xe5\x90\x97'
type(data): <class 'bytes'>

f.read()讀取文件指針會跑到文件的末端,如果再一次讀取的話 只能讀取到空格

f = open('32.txt', mode='rt', encoding='utf8')
data1 = f.read()
data2 = f.read()
print(f"data1: {data1}")
print(f"data2: {data2}")
f.close()
data1: aaa
bbb
ccc
nick最帥嗎
data2: 

f.read()是一次性讀取文件的所有內容,如果當文件過大的時候,可能會造成內存爆掉,即電腦卡死,所以做好用的是f.readline()或者f.readlines()讀取文件內容

# f.readline()/f.readlines()
f = open('32.txt', mode='rt', encoding='utf8')
print(f"f.readable(): {f.readable()}")  # 判斷文件是否可讀
data1 = f.readline()
data2 = f.readlines()
print(f"data1: {data1}")
print(f"data2: {data2}")
f.close()

二、 文件打開模式之w模式

​ w:只能寫不能讀,文件存在時先清空文件再寫入內容;文件不存在時創建文件再寫入內容。

# wt
f = open('34w.txt', mode='wt', encoding='utf8')
print(f"f.readable(): {f.readable()}")
f.write('nick 真帥呀\n')  # '\n'是換行符
f.write('nick,nick, you drop, I drop.')
f.write('nick 帥的我五體投地')
f.flush()  # 立刻將文件內容從內存刷到硬盤
f.close()
f.readable(): False

# wb
f = open('34a.txt', mode='wb')
f.write('nick 帥的我五體投地'.encode('unicode_escape'))  # 編碼成bytes類型
print(
    f"type('nick 帥的我五體投地'.encode('unicode_escape')): {type('nick 帥的我五體投地'.encode('unicode_escape'))}")
f.close()
type('nick 帥的我五體投地'.encode('unicode_escape')): <class 'bytes'>

三、文件打開模式之a模式

a:append 即追加,文件存在時會在文件的末端開始寫入內容;文件不存在時

會先創建文件再寫入內容

# at
f = open('34a.txt', mode='at', encoding='utf8')
print(f"f.readable(): {f.readable()}")
f.write('nick 真帥呀\n')  # '\n'是換行符
f.write('nick,nick, you drop, I drop.')
f.write('nick 帥的我五體投地')
f.close()
f.readable(): False

四、文件打開讀取二進制

b模式是通用模式,因為文件在硬盤中都以二進制的形式存儲的,需要注意的是;b模式讀寫文件,一定不能加上encoding參數,因為二進制不能再進行編碼了

try:
    import requests

    response = requests.get(
        'http://www.chenyoude.com/Python從入門到放棄/文件的三種打開模式-mv.jpg?x-oss-process=style/watermark')
    data = response.content

    f = open('mv.jpg?x-oss-process=style/watermark', 'wb')
    f.write(data)
    print('done...')
    f.close()
except Exception as e:
    print(e, '報錯了,那就算了吧,以后爬蟲處會詳細介紹')
done....
f = open('34w.txt', 'wb')
f.write('nick 好帥啊'.encode('utf8'))
f.close()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM