總結(jié)一下with open()和open()的區(qū)別與使用方法
使用例子:
with open('app.txt', 'w', encoding="utf-8") as file:
file.write(ls_cont)
1.用途:是python用來打開本地文件的,他會在使用完畢后,自動關(guān)閉文件,無需手動書寫close()
2.用法:
with open (file = "你要打開的路徑名(或保存內(nèi)容的地址)",mode = "r/w/a",encoding = "utf-8") as f1:
data = f1.read/write()
print(data)
3.關(guān)于mde的三種模式:
r:只讀 用read()
w:只寫 用write() //會清除之前寫的內(nèi)容
a:追加內(nèi)容 用write() //會在已經(jīng)寫的內(nèi)容基礎(chǔ)上增加新的內(nèi)容
open與with open區(qū)別
open()完成后必須調(diào)用close()方法關(guān)閉文件,因為文件對象會占用操作系統(tǒng)的資源,并且操作系統(tǒng)同一時間能打開的文件數(shù)量也是有限的,由于文件讀寫時都有可能產(chǎn)生IOError,一旦出錯,后面的f.close()就不會調(diào)用。with open()則可以避免這樣的情況。
由于文件讀寫時都有可能產(chǎn)生IOError,一旦出錯,后面的f.close()就不會調(diào)用。
所以,為了保證無論是否出錯都能正確地關(guān)閉文件,我們可以使用try … finally來實現(xiàn):
def readFile():
try:
f =open('C:\\Users\\a\\Desktop\\測試文件 test.txt','r')
try:
data = f.read()
print(data)
except:
print('error occurs while reading file')
finally:
f.close()
except:
print('rror occurs while reading file')
if __name__ == '__main__':
readFile()
這樣的操作太麻煩了,可以通過with open語法來代替:
def read_file():
try:
with open('C:\\Users\\a\\Desktop\\測試文件 test.txt','r') as f:
data = f.read()
print(data)
except:
print('error occurs while reading file')
if __name__ == '__main__':
read_file()
執(zhí)行結(jié)果與上例相同。這和前面的try … finally是一樣的,但是代碼更佳簡潔,并且不必調(diào)用f.close()方法,文件讀寫完成后,會自動幫我們調(diào)用 close 方法。
-------------------- 分割線 ---------------------
其它擴(kuò)展閱讀:
代碼
#文件的讀操作
with open('input_filename.txt','r') as f:#r為標(biāo)識符,表示只讀
df=pd.read_csv(f)
print(f.read())
'''
其他標(biāo)識符:
r: 以只讀方式打開文件。
rb: 以二進(jìn)制格式打開一個文件用于只讀。
r+: 打開一個文件用于讀寫。文件指針將會放在文件的開頭。
rb+:以二進(jìn)制格式打開一個文件用于讀寫。
'''
#文件的寫操作
with open('output_filename.csv', 'w') as f:
f.write('hello world')
'''
其他標(biāo)識符:
w: 打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
wb: 以二進(jìn)制格式打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
w+: 打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
wb+:以二進(jìn)制格式打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
a:打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。
ab: 以二進(jìn)制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。
a+: 打開一個文件用于讀寫。如果該文件已存在,文件指針將會放在文件的結(jié)尾。文件打開時會是追加模式。如果該文件不存在,創(chuàng)建新文件用于讀寫。
ab+:以二進(jìn)制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。如果該文件不存在,創(chuàng)建新文件用于讀寫。
''' 4
方法和屬性
f.read([size]) #將文件數(shù)據(jù)作為字符串返回,可選參數(shù)size控制讀取的字節(jié)數(shù)
f.readlines([size]) #返回文件中行內(nèi)容的列表,size參數(shù)可選
f.write(str) #將字符串寫入文件
f.writelines(strings) #將字符串序列寫入文件
f.close() #關(guān)閉文件
f.closed #返回布爾值,文件已經(jīng)被關(guān)閉為True,否則為False
f.mode #Access文件打開時使用的訪問模式
f.encoding #文件所使用的編碼
f.name #文件名
f.newlines #未讀取到行分隔符時為None,只有一種行分隔符時為一個字符串,當(dāng)文件有多種類型的行結(jié)束符時,則為一個包含所有當(dāng)前所遇到的行結(jié)束的列表
f.softspace #為0表示在輸出一數(shù)據(jù)后,要加上一個空格符,1表示不加。這個屬性一般程序員用不著,由程序內(nèi)部使用
注意
要讀取非UTF-8編碼的文本文件,需要給open()函數(shù)傳入encoding參數(shù)
讀取時調(diào)用read()將一次性讀取文件的全部內(nèi)容,如果文件有10G,內(nèi)存就爆了,保險起見可反復(fù)調(diào)用read(size)方法,每次最多讀取size個字節(jié)的內(nèi)容。
調(diào)用readline()可以每次讀取一行內(nèi)容,調(diào)用readlines()一次讀取所有內(nèi)容并按行返回list。
根據(jù)需要調(diào)用:如果文件很小,read()一次性讀取最方便;如果不能確定文件大小,反復(fù)調(diào)用read(size)比較保險;如果是配置文件,調(diào)用readlines()最方便
- 相關(guān)閱讀
- 圣誕節(jié)12.5號,卡通形象留言板模板
- asp論壇制作教程(二)——asp論壇制作文件關(guān)系發(fā)析
- 從空格談起--關(guān)于CSS模塊化設(shè)計
- CSS中的單位一覽 包括寬度尺寸單位 顏色單位 角度單位
- 表格斜線
- 深山留言板系統(tǒng) v3.5
- 如何利用ASP清除所有的Application對象
- Appium獲取手機(jī)分辨率 & 自適應(yīng)設(shè)備下滑刷新
- 共有0條關(guān)于《總結(jié)一下with open()和open()的區(qū)別與使用方法》的評論
- 發(fā)表評論
您發(fā)布的評論即表示同意遵守以下條款:
一、不得利用本站危害國家安全、泄露國家秘密,不得侵犯國家、社會、集體和公民的合法權(quán)益;
二、不得發(fā)布國家法律、法規(guī)明令禁止的內(nèi)容;互相尊重,對自己在本站的言論和行為負(fù)責(zé);
三、本站對您所發(fā)布內(nèi)容擁有處置權(quán)。
- 更多>>同類信息
- Android移動端自動化測試:使用UIAutomatorViewer與Selenium定位元素
- python通過代碼修改pip下載源讓下載庫飛起
- python里面requests.post返回的res.text還有其它的嗎
- windows7環(huán)境下安裝配置jdk
- python對微信操作要用到這兩個庫wxpy與itchat
- 8種Python字符串拼接的方法,你知道幾種
- 更多>>最新添加文章
- dw里面查找替換使用正則刪除sqlserver里面的CONSTRAINT
- Android移動端自動化測試:使用UIAutomatorViewer與Selenium定位元素
- 抖音直播音掛載小雪花 懂車帝小程序
- javascript獲取瀏覽器指紋可以用來做投票
- 火狐Mozilla Firefox出現(xiàn):無法載入您的Firefox配置文件 它可能已經(jīng)丟失 或是無法訪問 問題解決集合處理辦法
- 在Android、iOS、Windows、MacOS中微信小程序的文件存放路徑
- python通過代碼修改pip下載源讓下載庫飛起
- python里面requests.post返回的res.text還有其它的嗎