python錯誤解決:ValueError: I/O operation on closed file.
阿新 • • 發佈:2020-12-24
在python2版本中,
開啟csv檔案時要用binary模式開啟,即帶b的方式,如wb,ab等,而不能用文字模式,如w,w+,a+等。否則,使用witerrow寫,會產生空行。
但在python3版本中,直接使用wb寫入式開啟檔案,也會出錯,如下:
filename3="6-cos-result.csv"
out = open(filename3,'wb+')
csv_write = csv.writer(out,dialect='excel')
data_num=100#
for n in range(0,100 ):
print ("第",str(n+1),"個目標使用者")
m=11
for k in range(m):
if index1[k][n]!=n:
temp=[]
num=int(index1[k][n])
temp.append(num+1)
temp.append(data1[k][n])
csv_write.writerow(temp)
out.close()
出現錯誤:
此時,把out = open(filename3,‘wb+’)改為out = open(filename3,‘w+’),
此時程式正常執行,但是,寫入的表格中出現空行,如下:
此時,需要利用,with open(filename3,‘w’,newline=’’) as f:語句,則能夠實現消除空行的問題:
filename3="6-cos-result.csv"
with open(filename3,'w',newline='') as f:
csv_write=csv.writer(f, dialect='excel')
data_num=100#
for n in range(0,100):
print ("第",str(n+1),"個目標使用者")
m=11
for k in range(m):
if index1[k][n]!=n:
temp=[]
num=int(index1[k][n])
temp.append(num+1)
temp.append(data1[k][n])
csv_write.writerow(temp)
f.close()
此時,由於縮排問題,出現錯誤:
filename3="6-cos-result.csv"
with open(filename3,'w',newline='') as f:
csv_write=csv.writer(f,dialect='excel')
data_num=100#
for n in range(0,100):
print ("第",str(n+1),"個目標使用者")
m=11
for k in range(m):
if index1[k][n]!=n:
temp=[]
num=int(index1[k][n])
temp.append(num+1)
temp.append(data1[k][n])
csv_write.writerow(temp)
f.close()
錯誤解決,程式正常執行