python使用with結構開啟多個檔案

2021-09-11 19:56:37 字數 1088 閱讀 8309

**:erp_odoo_553490191

考慮如下的案例: 

同時開啟三個檔案,檔案行數一樣,要求實現每個檔案依次讀取一行,然後輸出,我們先來看比較容易想到的寫法:

with open(filename1, 'rb') as fp1:

with open(filename2, 'rb') as fp2:

with open(filename3, 'rb') as fp3:

for i in fp1:

j = fp2.readline()

k = fp3.readline()

print(i, j, k)

注意這裡只能對單個檔案進行for迴圈讀取,不能寫成:

for i, j, k in fp1, fp2, fp3:

print(i, j, k)

但可使用強大的zip操作:

for i, j, k in zip(fp1, fp2, fp3):

print(i, j, k)

這樣層層的巢狀未免囉嗦,with結構支援一種更簡潔的寫法:

with open(filename1, 'rb') as fp1, open(filename2, 'rb') as fp2, open(filename3, 'rb') as fp3:

for i in fp1:

j = fp2.readline()

k = fp3.readline()

print(i, j, k)

或者使用更為優雅的寫法,此時需要contextlib語法糖:

from contextlib improt exitstack

with exitstack() as stack:

files = [stack.enter_context(open(fname)) for fname in [filename1, filename2, filename3]]

for i, j, k in zip(files[0], files[1], files[2]):

print(i, j, k)

Python使用django搭建web開發環境

檢測是否安裝完成 c windows system32 python v python 3.5.2 安裝 virtualenv c windows system32 pip install virtualenv安裝成功後就可以開始建立虛擬環境,指定乙個你喜歡的目錄 c windows system3...

python使用迴圈結構 python迴圈結構

python迴圈結構 1.1 使用while python 中沒有 do while 迴圈 while else 在條件語句為 false 時執行 else 的語句塊 list iwhile ilen list print listii while可以使用else語句 list iwhile ile...

python下配置matplotlib開發環境

python下安裝好matplotlib模組後,可以成為非常優秀的作圖工具,就像matlab一樣。下面介紹一下matplotlib模組的詳細安裝步驟 1 安裝python 雖然目前python版本已經更新到了puthon3.4,但是仍然建議安裝python2.7,此外,考慮到後續安裝matplotl...