Python之操作csv檔案

2021-10-18 12:44:52 字數 4148 閱讀 4487

本篇僅作為**記錄

#!/usr/bin/python

# -*- coding: utf-8 -*-

# author: ruiming lin

# datetime: 2021/01/25 14:51

# description:

import requests

from pyquery import pyquery as pq

import csv

import numpy

import pandas as pd

'''r:以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。

rb:以二進位制唯讀方式開啟乙個檔案。檔案指標將會放在檔案的開頭。

r+:以讀寫方式開啟乙個檔案。檔案指標將會放在檔案的開頭。

rb+:以二進位制讀寫方式開啟乙個檔案。檔案指標將會放在檔案的開頭。

w:以寫入方式開啟乙個檔案。如果該檔案已存在,則將其覆蓋。如果該檔案不存在,則建立新檔案。

wb:以二進位制寫入方式開啟乙個檔案。如果該檔案已存在,則將其覆蓋。如果該檔案不存在,則建立新檔案。

w+:以讀寫方式開啟乙個檔案。如果該檔案已存在,則將其覆蓋。如果該檔案不存在,則建立新檔案。

wb+:以二進位制讀寫格式開啟乙個檔案。如果該檔案已存在,則將其覆蓋。如果該檔案不存在,則建立新檔案。

a:以追加方式開啟乙個檔案。如果該檔案已存在,檔案指標將會放在檔案結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,則建立新檔案來寫入。

ab:以二進位制追加方式開啟乙個檔案。如果該檔案已存在,則檔案指標將會放在檔案結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,則建立新檔案來寫入。

a+:以讀寫方式開啟乙個檔案。如果該檔案已存在,檔案指標將會放在檔案的結尾。檔案開啟時會是追加模式。如果該檔案不存在,則建立新檔案來讀寫。

ab+:以二進位制追加方式開啟乙個檔案。如果該檔案已存在,則檔案指標將會放在檔案結尾。如果該檔案不存在,則建立新檔案用於讀寫。

'''# 爬取頁面的方法

defget_html

(page)

: url =

""+str

(page)

response = requests.get(url=url)

if response.status_code ==

200:

return response.text

else

:return

none

defscrape_html_1

(i):

html = get_html(i)

doc = pq(html)

trs = doc.find(

"table tr:not(:first-child)"

).items(

)for tr in trs:

name = tr.find(

"td:nth-child(2)"

).text(

) team = tr.find(

"td:nth-child(3)"

).text(

) score = tr.find(

"td:nth-child(4)"

).text(

) rate = tr.find(

"td:nth-child(6)"

).text(

)yield

[name, team, score, rate]

defscrape_html_2

(i):

html = get_html(i)

doc = pq(html)

trs = doc.find(

"table tr:not(:first-child)"

).items(

)for tr in trs:

name = tr.find(

"td:nth-child(2)"

).text(

) team = tr.find(

"td:nth-child(3)"

).text(

) score = tr.find(

"td:nth-child(4)"

).text(

) rate = tr.find(

"td:nth-child(6)"

).text(

)yield

# 寫入列表,逐行寫入

flag =

false

# flag = true

if flag:

results =

for i in

range(3

):results.extend(scrape_html_1(i +1)

)with

open

('files/data.csv'

,'w'

, encoding=

'utf-8'

, newline='')

asfile

:for result in results:

writer = csv.writer(

file

) writer.writerow(result)

# 寫入列表,多行寫入

flag =

false

# flag = true

if flag:

results =

for i in

range(3

):results.extend(scrape_html_1(i +1)

)with

open

('files/data.csv'

,'w'

, encoding=

'utf-8'

, newline='')

asfile

: writer = csv.writer(

file

) writer.writerows(results)

# 寫入字典

flag =

false

# flag = true

if flag:

results =

for i in

range(3

):results.extend(scrape_html_2(i +1)

)with

open

('files/data.csv'

,'w'

, encoding=

'utf-8'

, newline='')

asfile

: fieldnames =

['名字'

,'隊伍'

,'得分'

,'命中率'

] writer = csv.dictwriter(

file

, fieldnames=fieldnames)

writer.writeheader(

) writer.writerows(results)

# 讀取本地csv檔案

flag =

false

# flag = true

if flag:

with

open

('files/data.csv'

,'r'

, encoding=

'utf-8')as

file

: reader = csv.reader(

file

)for row in reader:

print

(type

(row)

)print

(row)

# 使用pandas的read_csv()

flag =

false

flag =

true

if flag:

df = pd.read_csv(

'files/data.csv'

)print

(df)

python操作 csv檔案

需求 將a.csv中,相同手機號,只要有乙個傳送成功,則其餘改為傳送成功 遍歷軟體執行的資料夾 path dir os.getcwd for root,dirs,files in os.walk path dir for file in files if file.endswith csv f op...

python操作csv檔案

看上去不像是最優的樣子,可以改善 import csv csvfile open sentence lenth data.csv r encoding utf8 使用utf8格式讀取,windows預設讀取方式gbk reader csv.reader csvfile 讀取的是整張表 行 列 for...

python操作csv檔案

csv comma separated values 即逗號分隔值,可以用excel開啟檢視。由於是純文字,任何編輯器也都可開啟。與excel檔案不同,csv檔案中 值沒有型別,所有值都是字串,不能指定字型顏色等樣式,不能指定單元格的寬高,不能合併單元格沒有多個工作表,不能嵌入影象圖表 在csv檔案...