Python讀寫文件(csv、txt、excel)

大家做在數(shù)據(jù)處理的時(shí)候,肯定難免會(huì)與文件交互,那么對于指定的文件類型,我們?nèi)绾尾僮髂兀?/p>

1.python讀寫csv文件

import csv
 
#python2可以用file替代open
with  open('test.csv','w') as csvFile:
    writer = csv.writer(csvFile)
    #先寫columns_name
    writer.writerow(["index","a_name","b_name"])
    #寫入多行用writerows
    writer.writerows([[1,2,3],[0,1,2],[4,5,6]])
 
#用reder讀取csv文件
with open('test.csv','r') as csvFile:
    reader = csv.reader(csvFile)
    for line in reader:
              print line

一定要注意,csv文件在寫入時(shí),字段和字段之間是用逗號“”,“”分割的,如果稍微不注意,就會(huì)出現(xiàn)串行的情況。

2.python讀寫excel文件

import xlwt
#創(chuàng)建工作簿
f = xlwt.Workbook()
 '''
    創(chuàng)建第一個(gè)sheet:
    sheet1
 '''
 #創(chuàng)建sheet
 sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True)
 row0 = [u'編號',u'單位',u'網(wǎng)站備案號',u'域名',u'外鏈名稱',u'不良網(wǎng)站名',u'不良url地址',u'地市',u'ip地址',u'截圖',u'備注',u'審核時(shí)間',u'父鏈接',u'源碼超鏈接']
 #生成第一行
 for i in range(0,len(row0)):
       sheet1.write(0,i,row0[i])  # 順序?yàn)閤行x列寫入第x個(gè)元素
 f.save('newfile.xls')
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 讀取excel數(shù)據(jù)
import xlrd
data = xlrd.open_workbook('test.xls') # 打開xls文件
table = data.sheets()[0] # 打開第一張表
nrows = table.nrows      # 獲取表的行數(shù)
for i in range(nrows):   # 循環(huán)逐行打印
    if i == 0: # 跳過第一行
        continue
    print table.row_values(i)

3.python讀寫txt文件

#第一種
with open("test.txt","r","utf-8") as f:   
  # 為a+模式時(shí),因?yàn)闉樽芳幽J?,指針已?jīng)移到文尾,讀出來的是一個(gè)空字符串。
    ftext = f.read()  # 一次性讀全部成一個(gè)字符串
    ftextlist = f.readlines() # 也是一次性讀全部,但每一行作為一個(gè)子句存入一個(gè)列表
#第二種
f = open('test.txt', 'r', 'utf-8') 
ftext = f.read() # 一次性讀取完成
ftextlist = f.readlines() # 同上
fline = f.readline() # 只讀取1行
f.close() # 關(guān)閉文件

# 寫入txt
f = open('test.txt', 'ab', 'utf-8')  # 在文件存在內(nèi)容的時(shí)候追加
f = open('test.txt', 'wb', 'utf-8')  # 文件存在時(shí)直接覆蓋,沒有就創(chuàng)建文件寫入
f.write('aa') # 文件寫入內(nèi)容
f.close()
# 第二種
with open('test.txt', 'a') as f: # 道理同上
        f.write('aa')
with open('test.txt', 'w') as f: # 道理同上
        f.write('aa')
image.png

接下來說說with open 和 open的區(qū)別:

區(qū)別:

用open去打開一個(gè)文件進(jìn)行讀取,假設(shè)文件不存在的話,比如打開文件 aaaa


image.png

如果文件不存在,open()函數(shù)就會(huì)拋出一個(gè)IOError的錯(cuò)誤,并且給出錯(cuò)誤碼和詳細(xì)的信息告訴你文件不存在!
如果文件打開成功,接下來,調(diào)用read()方法可以一次讀取文件的全部內(nèi)容,Python把內(nèi)容讀到內(nèi)存,用一個(gè)str對象表示

>>> f.read()
'Hello, world!'

最后一步是調(diào)用close()方法關(guān)閉文件。文件使用完畢后必須關(guān)閉,因?yàn)槲募ο髸?huì)占用操作系統(tǒng)的資源,并且操作系統(tǒng)同一時(shí)間能打開的文件數(shù)量也是有限的:

f.close()

由于文件讀寫時(shí)都有可能產(chǎn)生IOError,一旦出錯(cuò),后面的f.close()就不會(huì)調(diào)用。所以,為了保證無論是否出錯(cuò)都能正確地關(guān)閉文件,我們可以使用try ... finally來實(shí)現(xiàn):

try:
    f = open('/path/to/file', 'r')
    print(f.read())
finally:
    if f:
        f.close()

但是每次都這么寫實(shí)在太繁瑣,所以,Python引入了with語句來自動(dòng)幫我們調(diào)用close()方法:

with open('/path/to/file', 'r') as f:
    print(f.read())

這和前面的try ... finally是一樣的,但是代碼更佳簡潔,并且不必調(diào)用f.close()方法。

總結(jié):以后讀寫文件都使用with open語句,不要再像以前那樣用f = open()這種語句了!

作者:可愛的小蟲蟲

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,305評論 2 89
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時(shí),會(huì)觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 5,971評論 0 9
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,657評論 1 32
  • “雨的氣味?” “那時(shí)下雨來著,聽得見雨點(diǎn)落地聲那么大的雨。但母親沒打傘就到外面走,拉著我的手一起走在雨中。季節(jié)是...
    1801仲泓宇閱讀 351評論 0 0
  • 中國文化就是這么迷人,好像這三個(gè)字,大保健,每個(gè)字都沒問題,湊到一起就別有一番意思。 現(xiàn)在生活確實(shí)比以前好很多,小...
    妖娥子廣州閱讀 748評論 0 3

友情鏈接更多精彩內(nèi)容