Python3 操作 csv 數(shù)據(jù)文件

很多情況下我們會從 Mongo 或者 MySQL 數(shù)據(jù)庫中導(dǎo)出數(shù)據(jù)為 csv 格式的數(shù)據(jù)文件煌寇,就行下面這樣

example.csv

Host,IP,Port,Status,Disk,Memory
"mysql-master","192.168.11.61",3306,"up",2048,32
"mysql-salve","192.168.11.62",3306,"up",3096,16
"mysql-salve","192.168.11.63",3306,"down",2048,16
"mycat","192.168.11.60",8066,"up",2048,16

讀取數(shù)據(jù)

with open('example.csv') as f:
    f_csv = csv.reader(f)
    
    headers = next(f_csv)
    print(*headers)
    for row in f_csv:
        print(*row)

f_csv 會是一個迭代器嫌松,使用 next() 函數(shù)會得到文件的第一行內(nèi)容涕滋, headersrow 返回的都是列表類型的數(shù)據(jù)

輸出內(nèi)容:

Host IP Port Status Disk Memory
mysql-master 192.168.11.61 3306 up 2048 32
mysql-salve 192.168.11.62 3306 up 3096 16
mysql-salve 192.168.11.63 3306 down 2048 16
mycat 192.168.11.60 8066 up 2048 16

假如你讀入數(shù)據(jù)后不是想展示的,而是用這些數(shù)據(jù)中的某個字段的值,那么可以使用對應(yīng)的索引來取值姐叁,但是我建議你用命名元組來包裝一下這些數(shù)據(jù)桑谍。

from collections import namedtuple

with open('example.csv') as f:
    f_csv = csv.reader(f)
    headings = next(f_csv)
    Row = namedtuple('Row', headings)
    for r in f_csv:
        row = Row(*r)
        print(row.Hose)

輸出內(nèi)容

mysql-master
mysql-salve
mysql-salve
mycat

修改 csv 文件

假設(shè)延柠,我把剛才的文件內(nèi)修改一下,在最后添加一個字段 Other锣披,之后再存入原來的文件贞间,我可以這樣做

import csv, os

with open('example.csv') as f, open('.example.csv', 'w', encoding='utf-8') as w_f:
    csv_rf = csv.reader(f)
    headers = next(csv_rf)
    
    # 添加表頭字段
    headers.append('Other')

    rows = []
    for row in csv_rf:
        # 為每行添加值
        row.append("other")
        
        # 把每一行添加到列表
        rows.append(row)
    # 把可寫文件對象給到模塊的寫方法贿条,返回一個 csv 的寫對象    
    csv_wf = csv.writer(w_f)

    # 寫表頭
    csv_wf.writerow(headers)

    # 寫數(shù)據(jù)
    csv_wf.writerows(rows)
    
    # 刪除原來的文件
    os.remove('example.csv')
    
    # 把含有新數(shù)據(jù)的文件名改為原來的文件名,實現(xiàn)修改文件
    os.rename('.example.csv', 'example.csv')

寫入的數(shù)據(jù)源是列表字典

假如要寫入到數(shù)據(jù)是一個列表增热,列表中是字典整以,每個字典是一行數(shù)據(jù)

headers = ['Host', 'IP', 'Port', 'Status', 'Disk', 'Memory', 'Other']

rows = [
    {'Host': 'mycat', 'IP': '192.168.11.60', 'Port': 8066, 'Status': 'up', 'Disk': '2048', 'Memory': '16', 'Other': 'other'},
    {'Host': 'mycat', 'IP': '192.168.11.60', 'Port': 8066, 'Status': 'up', 'Disk': '2048', 'Memory': '16', 'Other': 'other'}, 
    {'Host': 'mycat', 'IP': '192.168.11.60', 'Port': 8066, 'Status': 'up', 'Disk': '2048', 'Memory': '16', 'Other': 'other'}, 
    {'Host': 'mycat', 'IP': '192.168.11.60', 'Port': 8066, 'Status': 'up', 'Disk': '2048', 'Memory': '16', 'Other': 'other'}
]

那你可以直接就行寫入到一個文件中,無序多余的處理

with open('host_info.csv','w') as f:
    f_csv = csv.DictWriter(f, headers)
    f_csv.writeheader()
    f_csv.writerows(rows)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末峻仇,一起剝皮案震驚了整個濱河市公黑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌摄咆,老刑警劉巖凡蚜,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吭从,居然都是意外死亡朝蜘,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門影锈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芹务,“玉大人,你說我怎么就攤上這事鸭廷≡姹В” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵辆床,是天一觀的道長佳晶。 經(jīng)常有香客問我,道長讼载,這世上最難降的妖魔是什么轿秧? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮咨堤,結(jié)果婚禮上菇篡,老公的妹妹穿的比我還像新娘。我一直安慰自己一喘,他們只是感情好驱还,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凸克,像睡著了一般议蟆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上萎战,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天咐容,我揣著相機(jī)與錄音,去河邊找鬼蚂维。 笑死戳粒,一個胖子當(dāng)著我的面吹牛路狮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蔚约,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼览祖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了炊琉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤又活,失蹤者是張志新(化名)和其女友劉穎苔咪,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柳骄,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡团赏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了耐薯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舔清。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖曲初,靈堂內(nèi)的尸體忽然破棺而出体谒,到底是詐尸還是另有隱情,我是刑警寧澤臼婆,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布抒痒,位于F島的核電站,受9級特大地震影響颁褂,放射性物質(zhì)發(fā)生泄漏故响。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一颁独、第九天 我趴在偏房一處隱蔽的房頂上張望彩届。 院中可真熱鬧,春花似錦誓酒、人聲如沸樟蠕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坯墨。三九已至,卻和暖如春病往,著一層夾襖步出監(jiān)牢的瞬間捣染,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工停巷, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留耍攘,地道東北人榕栏。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像蕾各,于是被迫代替她去往敵國和親扒磁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容