久久综合九色综合97婷婷-美女视频黄频a免费-精品日本一区二区三区在线观看-日韩中文无码有码免费视频-亚洲中文字幕无码专区-扒开双腿疯狂进出爽爽爽动态照片-国产乱理伦片在线观看夜-高清极品美女毛茸茸-欧美寡妇性猛交XXX-国产亚洲精品99在线播放-日韩美女毛片又爽又大毛片,99久久久无码国产精品9,国产成a人片在线观看视频下载,欧美疯狂xxxx吞精视频

有趣生活

當前位置:首頁>職場>excel如何讀取csv文件(想提高工作效率)

excel如何讀取csv文件(想提高工作效率)

發布時間:2024-01-24閱讀(16)

導讀前言及工具安裝:不管小白也好,還是剛學有成,這篇文章一定對你有用。只要跟著以下實現的步驟流程,能耐心的看下去,即使是小白,也能學會這項技能。因為這些都是很基....前言及工具安裝:

不管小白也好,還是剛學有成,這篇文章一定對你有用。只要跟著以下實現的步驟流程,能耐心的看下去,即使是小白,也能學會這項技能。因為這些都是很基礎的知識,不需要太多的邏輯實現,更談不到什么數據結構算法,所以學習起來不枯燥、不會感到辛苦和吃力,能讓學了馬上學有所成,同樣能獲得成就感爆棚的一項技能。在此學習之前,建議至少先安裝好運行代碼的工具,比如純小白學習的話,這款VSCode編輯器工具更為推薦,原因就是它兼容性算比較好,不用下載安裝各種模塊包,而且直接下載安裝搞定。

如果遇到安裝問題不知道怎么處理的,免得在網上到處找資料,到處碰壁,有興趣的可以看下我的這篇文章,是專講Python工具的安裝教程(超詳細),包括pycharm、anaconda這兩款硬核工具,如果還是不能解決的,「 可以通過評論,看到,會第一時間解決」:

小白都能看得懂的Python軟件安裝教程和配置,很詳細,值得收藏

對于正在工作中的白領也好還是正在上大學的大學生也好,學好一門編程語言,尤其是Python這門語言,在職場上是很有價值的,一來可以提高職場競爭力,二來可以提升工作效率。語言的本質它就是一個工具,我們得會用它,畢竟“工欲善其事必先利其器”。

excel如何讀取csv文件(想提高工作效率)(1)

每個打工者都知道,在工作上,本來要加班到很晚或者是要忙到幾天幾夜才能完成的工作報表,因為哪天會了python這門技術,會利用這個工具,結果還能提早下班,可以留出那么多的時間去做自己喜歡做的事情。同時還更能讓老板看重和同事們的羨慕。不管做運營的,還是財務部門的,還是人力資源部的等等行業,善于利用Python做些自動化辦公的技術活豈不是很吃香?(不僅加薪升職,更是精神上的解脫)

工作中碰到最多的無非就是Excel表格和一些普通文件的處理,尤其數量龐大且數據復雜的情況,整理起來會有讓人有種快瘋狂的節奏。真的是神累、心更累,為了能夠解決工作上,對這些問題的困擾,以下談兩個場景,說不定哪天就派上用場了。

一、實現.txt文件要求:

比如,有一天,老板發給了你一個郵件,郵件里面有一個壓縮文件,通過下載到電腦之后,你高高興興的對文件解壓并點開一看,發現文件打開來是成千上萬的文件,文件類型也很多,包括了.txt后綴的普通文檔,圖片(png,jpg,jpeg等格式).csv,.xlsx,壓縮包,配置文件等等類型文件,你除了嘆氣還是嘆氣。

這時候,比如老板要求叫你,給我找到文件內容信息中要包含有“西瓜”這個關鍵詞的文件,而且要求是.txt文件的,給我整理出來,同時并把這個文件的路徑地址一同做成文件發給我。

想想,成千上萬的文件,而且要求里面的內容包含老板想要的關鍵詞(西瓜),這時候,難道要對.txt的文件一個一個打開,然后不斷去搜索,做復制粘貼的重復性工作嗎?如果幾千幾萬個文件,估計加一兩個晚上的班,這樣的效率不太可能完成,就算可以,也會有出錯,或者少漏等情況,畢竟是人工審核。既然如此,我們得想到最好的方法,用工具代替人工,實現更準更快的方法,代替我們雙手和精神上的解放吧。

實現步驟流程:

對于這個問題,其實很簡單,說了那么多的介紹,接下來干貨開始吧,具體看步驟。對于文件的操作,首先是需要先導入“os”這個包,在Python里,os是個標準庫,不需要安裝,直接拿來使用即可。python的格式,如下所示

步驟1:

import os# 導入os模塊

步驟2:

設置保存文件路徑,先把老板發的文件存放到任何一個盤符下,如果是在工具上操作,可以放在工具的同一個文件中,這個就取相對路徑即可 ./xxxxx格式 的,也可以放在任何盤符,這個就需要取它的絕對路徑。在python中,絕對路徑的書寫方式常用的有兩種:

第1種:"C:/Users/zhangSan/Desktop/1.csv"

第2種:"C:\Users\zhangSan\Desktop\1.csv"

我保存的是在F盤下,所以我就創建一個文件:

path = "F:\TEST\"# 創建文件路徑

步驟3:

目的是要找到.txt類型的文件,前提我們要先提取出來文件的名稱,這個提取方法,咱們用filenames用來保存所有文件名稱的,看代碼

filenames = os.listdir(path)# 獲取讀取文件的名稱

通過三個步驟,就可以取到所有文件的名稱了,整個代碼如下所示

import ospath = "D:\" #為了測試的,這個隨意,文章所寫要做的是在F盤下filenames = os.listdir(path)print(filenames)# 打印所有文件名稱

結果就把D盤所有文件的名稱都打印出來了,如下圖所示

excel如何讀取csv文件(想提高工作效率)(2)

步驟4:

咱們把老板要求文件里要有西瓜關鍵詞的這個問題,讓用戶自己去輸入的方式來實現,這里要用到一個函數,"input",代碼即如下

key_word = input("請輸入你要查找的關鍵詞:")

步驟5:

到了這一步,需要創建一個命名為 result_melon.txt隨便命名)的文件來保存含有西瓜關鍵詞的“.txt后綴”的文件,這里以追加方式打開文件:

result_melon = open("F:\result_melon.txt",a,encoding="utf-8")

步驟6:

通過遍歷讀取到所有的文件名稱,用for循環,代碼如下所示

for fliename in filenames: # fro循環遍歷

步驟7:

因為我們要的是".txt"后綴的文件,所以這里需要用一個if判斷語句,來判斷在文件名稱中是否存在后綴名為.txt的文件,代碼如下所示

if ".txt" in filename:# 判斷在文件名稱中是否存在后綴名為.txt的文件

為了確定是否正確,可以先讓其在終端上顯示出來,可以輸入打印以下信息

print("找到文件了:" filename)#如果.txt文件存在,就打印出來

到了這里,僅僅是找到了文件而已,而我們要的是這個文件的整個文件路徑,所以需要做拼接處理,拼接成完整的文件相對路徑,保存到為“target”命名(命名隨意)的的目標文件中,代碼如下所示

target = path filename # 拼接成完整的文件相對路徑

步驟8:

這一步需要打開讀取文件,編碼格式為“utf-8”,代碼如下所示

file = open(target,"r",encoding="utf-8")# 打開文件

文件的讀取,用read()函數,假設用contents來保存.txt文件中包含的所有信息內容,代碼如下所示

contents = file.read()# 讀文件

最后,有打開文件,就必須要記得關閉文件,代碼如下所示

file.close()# 關閉文件

步驟9:

知道了所有.txt文件包含的信息,要求是要找到“西瓜”關鍵詞的,所以很好辦,還是利用if判斷語句就能解決了。即判斷輸入的關鍵詞是否存在.txt的文件內容當中,因為我們的關鍵詞是通過用戶輸入的,代碼可以這么寫

if key_word in contents:# 判斷輸入的關鍵詞是否在內容中

為了能夠確認是否合乎要求,可以將信息打印出來看看,比如

print("真給力,目標文件{}中,包含了{}這個關鍵詞。".format(target,key_word))

其中的 .format()函數 是用來格式化處理,它增強了字符串格式化的功能,代替以前的“%”形式,可以接受不限個參數,位置可以不按順序,這些了解一下即可。

最后,確定了存在西瓜關鍵詞存在.txt文件當中,那么為了要求的目的,將這個目標文件寫入到result_melon中,寫入文件用到 write()函數,把讀取到的文件寫入要保存的文件當中,并且以換行顯示,代碼如下所示

result_melon.write(target " ")# 寫入文件

步驟10:

這也是最后一步,因為在一開始時,創建并打開了一個命名為result_melon.txt的文件,在完成所有需求操作后,需要關閉文件的操作。

result_melon.close()# 關閉文件

好了,到這里,所有的要求條件就都滿足了,接下來,看看整體代碼是怎么寫的?如下所示

import os # 導入標準庫path = "F:\TEST\" # 創建文件路徑filenames = os.listdir(path) # 獲取讀取文件的名稱# 用戶輸入信息key_word = input("請輸入你要查找的關鍵詞:")# 創建一個命名為result_melon.txt的文件,以追加方式打開文件result_melon = open("F:\result_melon.txt", a, encoding="utf-8")# 遍歷讀取到的文件名稱for filename in filenames: # 判斷在文件名稱中是否存在后綴名為.txt的文件 if ".txt" in filename: # 找到則打印以下信息 print("找到文件了:" filename) # 拼接成完整的文件相對路徑,保存到為target的目標文件中 target = path filename file = open(target, "r", encoding="utf-8") # 打開并讀取文件 contents = file.read() # contents為.txt文件中包含的所有信息內容 file.close() # 關閉文件 # 判斷輸入的關鍵詞是否存在.txt的文件內容當中 if key_word in contents: # 存在則打印以下信息 print("真給力,目標文件{}中,包含了{}這個關鍵詞。".format(target, key_word)) result_melon.write(target " ") # 把讀取到的文件寫入要保存的文件當中,并且換行顯示result_melon.close() # 關閉文件

通過在pycharm編輯器上運行之后,結果如下圖所示:

excel如何讀取csv文件(想提高工作效率)(3)

說明代碼方面沒有任何問題,這時而在目錄下也多了一個result_melon.txt的文件,文件打開可以看到,這里面的文件路徑“F:TEST343.txt”是存放了包含“西瓜”關鍵詞的文件完整路徑,只有包含“西瓜”關鍵詞的才會保存在這個文件里,如下圖所示

excel如何讀取csv文件(想提高工作效率)(4)

二、實現csv文件要求:

有一天,你的上司同樣發了一封郵件給你,在還沒來得及下載打開,這時leader并帶著微笑向你走來,告訴你說:“好同志,我發給你的一份csv表格里,是咱們公司幾萬員工的職位表都包含在里面,現在急要,麻煩你把每個員工做成單獨的csv表格放到一個文件夾,壓縮后發給我”。幾萬份,聽著很夸張,于是你打開看看,類似這樣的表格。

excel如何讀取csv文件(想提高工作效率)(5)

而上司的要求是這樣的:

excel如何讀取csv文件(想提高工作效率)(6)

如果換做是你,你會怎么辦?幾萬份不是個小數目,難道要每個都新建新的一張表格,然后復制粘貼嗎?這樣不僅效率低下,或容易導致輸錯或疏漏等情況,也容易讓人崩潰到極點的地步。按幾萬份的量來說,靠著復制粘貼的方法,幾個晚上也難免能完成得了,而如果通過python,僅前提寫好十幾二十行代碼量,就能分分鐘搞定,這樣的效率且高,不易出錯或疏漏的問題。好,咱們開始看如何來實現的吧。

實現步驟流程:

步驟1:

同樣的需要導入 csv模塊,Python自帶了csv模塊,提供用戶對csv文件進行讀寫的操作,命令如下所示

import csv #導入csv模塊

下面這是一張測試實驗的csv表格,感興趣的可以拿來一樣來測試下,如下表

名稱

編號

職位

工資

劉一

1

程序員

20000

陳二

2

程序員

20000

張三

3

程序員

20000

李四

4

程序員

20000

王五

5

程序員

20000

趙六

6

程序員

20000

孫七

7

程序員

20000

周八

8

程序員

20000

吳九

9

程序員

20000

鄭十

10

程序員

20000

何十一

11

程序員

20000

祝十二

12

程序員

20000

黃十三

13

程序員

20000

柯十四

14

銷售員

15000

馮十五

15

銷售員

15000

余十六

16

銷售員

15000

曾十七

17

銷售員

15000

鄒十八

18

銷售員

15000

袁十九

19

銷售員

15000

董二十

20

銷售員

15000

熊二十一

21

銷售員

15000

章二十二

22

分析師

25000

蔣二十三

23

分析師

25000

楊二十四

24

分析師

25000

連二十五

25

分析師

25000

左二十六

26

分析師

25000

肖二十七

27

分析師

25000

林二十八

28

分析師

25000

錢二十九

29

分析師

25000

朱三十

30

主管

30000

秦三十一

31

主管

30000

呂三十二

32

主管

30000

曹三十三

33

經理

30000

魏三十四

34

經理

30000

金三十五

35

經理

30000

姜三十六

36

財務

20000

謝三十七

37

總監

70000

可以將保存到csv表格文件當中,將這個文件保存到任意盤符都行,我的是放在電腦桌面,設置保存文件路徑

employee_path = C:/Users/80491/Desktop/員工職位表.csv # 設置保存文件路徑

因為還有制作一份文件夾來保存這所有員工的csv表格,所以還需要再設置存放所有員工表的文件路徑,這里我同樣存放在電腦桌面,將文件夾命名為demo

employees_path = C:/Users/80491/Desktop/demo/ # 設置存放所有員工表的文件路徑

步驟2:

以“”的方式打開員工職位表這個文件,這里利用:with open() as file:的格式,為什么要這么寫,不像上面打開文件的寫法,這樣的寫法主要是為了解決在讀寫打開文件后有時候忘記了close()關閉文件的操作。具體使用方法,如下是官方文檔中給出的一個例子

>> import csv>>> with open(names.csv, newline=) as csvfile:... reader = csv.DictReader(csvfile)... for row in reader:... print(row[first_name], row[last_name])...Eric IdleJohn Cleese>>> print(row)OrderedDict([(first_name, John), (last_name, Cleese)])

有個值得注意的地方

在函數里面的參數書寫格式里,還要注意編碼的格式,如果保存的是“utf-8”的格式,就必須寫上編碼格式,但最好不要僅僅寫“utf-8”:如這樣:

with open(names.csv, encoding="utf-8", newline=) as csvfile:

最好是寫"utf-8-sig",這樣的寫法:

with open(names.csv, encoding="utf-8-sig", newline=) as csvfile:

為什么utf-8編碼后面要帶個“-sig”?主要原因是為了解決多出了一個非法字符("ufeff"),否則會造成讀寫失敗。具體為什么就別管太多了,知道這么用就行了。

但是這個演示的csv表格文件,是沒另存為utf-8格式的,所以不需要加上編碼格式,否則會報這樣的錯誤提示:

UnicodeDecodeError: utf-8 codec cant decode byte 0xc3 in position 0: invalid continuation byte

excel如何讀取csv文件(想提高工作效率)(7)

正確的這么寫即可:

with open(employee_path, r, newline=) as employee_file:# 以讀的方式打開文件

到這一步,當然是讀取文件了,將文件對象轉換為DictReader對象。有人要問了,為什么不需要用read()函數了?不了,這里更推薦使用DictReader的用法。

原因何在?因為在Python的csv模塊為我們提供了一種更好的讀取方式,當csv文件中若存在映射關系,需要將字典類型的數據讀取/寫入csv文件時,就使用DictReader/DictWriter這兩種方法。雖然read()和write()函數的用法也可以實現,但DictReader/Dictwriter可以更好地反映出表頭與文件內容的映射關系。

以讀的方式或者使用以只寫的方式打開文件,都會使用到將文件對象轉換為DictReader/DictWriter對象。DictReader和read()的區別就是:前者是個類,后者是個函數(帶上"小括號()"),同理,DictWriter和writer()也是一樣。

DictReader/DictWriter會將字典讀取/寫入(映射)到csv文件的行中,會將讀取或寫入到的信息轉換為字典形式。和read()和writer()函數是有一定區別的。

好,介紹到這里,怎么寫文件對象轉換為DictReader對象?代碼如下所示

employee_csv = csv.DictReader(employee_file)

因為我要先將csv對象的表頭給讀出來,里面用到一個fieldnames屬性,其作用是設置csv文件的第一行表頭數據,為了確認代碼的可行性,把信息打印出來看看,代碼如下所示

headers = employee_csv.fieldnames#打印表頭信息print("里面的表頭信息為:{}".format(headers)

結果如下圖所示:

excel如何讀取csv文件(想提高工作效率)(8)

步驟3:

有了表頭信息之外,通過遍歷除了表頭之外的每一行數據,這里用到for循環,代碼如下所示

for data_row in employee_csv:

遍歷之后,我們要先獲取它的文件名稱 .csv后綴格式,所以這里需要用到拼接處理?!懊睘椤?strong>filename”的文件來保存這些.csv文件名稱,代碼如下所示

filename = data_row[名稱] .csv # 拼接處理

最后要將獲取到的這些數據進行拼接成新的且完整的文件路徑,命名為“filepath”的文件來保存獲取到的所有文件的完整路徑,代碼如下所示

filepath = employees_path filename # 設置新的且完整的文件路徑

為了確認可行性,打印輸出信息看看:

print(filepath) # 打印文件所在的完整地址

結果如下圖所示:

excel如何讀取csv文件(想提高工作效率)(9)

得到了我們想要的數據。

步驟4:

到這里一步很關鍵,因為我們要把所有員工的csv表格文件都寫入到這個新的文件中,所以要對這個文件進行以寫的方式打開文件,代碼如下圖所示

with open(filepath, w, newline=) as employees_file: # 以寫的方式打開文件

步驟5:

到了這一塊知識點很重點,以寫方式打開文件是要將文件對象轉換為DictWriter對象;跟上面以讀取打開文件的方式是要將文件對象轉換為DictReader對象,這一點需要記住

參考:在實例化DictWriter的時候,我們需要將一個列表傳給參數fieldnames,而且必須要傳入該參數,如果要問為什么,死記硬背它即可,就是需要,這是一種約定。目的是因為在設置csv文件的第一行表頭數據,當我們要將字典通過DictWriter對象寫入csv文件時,通常會把字典的鍵存入一個列表,再把這個列表傳給參數fieldnames。用命名為target_files保存DictReader對象,長這樣

excel如何讀取csv文件(想提高工作效率)(10)

代碼如下所示

target_files = csv.DictWriter(employees_file, fieldnames = headers)

步驟6:

寫入表頭,這里使用writeheader()的方法即可實現,代碼如下所示

target_files.writeheader() # 寫入表頭

步驟7:

到了這一步,也是最后一步,完成上司交代任務的關鍵點,就是寫入數據這塊了,將數據寫入到目標文件中。寫入csv表格的數據有幾種方法,比如:writerow()和writerows()這兩種方法。

1、writerow()方法:

先看這段代碼:

import csvmy_list = [10, 11, 12, 13, 14]with open("C:/Users/80491/Desktop/list.csv", "w", encoding="utf-8", newline=) as lists: files = csv.writer(lists) files.writerow(my_list)

excel如何讀取csv文件(想提高工作效率)(11)

從得到的表圖中看到,writerow()方法作用是將一個列表全部寫入csv的同一行中

2、writerows()方法:

先看這段代碼:

import csvmy_lists = [[10], [11], [12], [13], [14]]with open("C:/Users/80491/Desktop/lists.csv", "w", encoding="utf-8", newline=) as lists: files = csv.writer(lists) files.writerows(my_lists)

excel如何讀取csv文件(想提高工作效率)(12)

從表圖中看到,writerows()方法作用是將一個二維列表中的每一個列表寫為一行(即多行顯示)。從這兩個方法中看,writerow()接受一維數據,writerows()接受二維數據。

所以很清楚,現在我們的數據是一維數據,只需要用writerow()方法即可,代碼如下所示

target_files.writerow(data_row) # 將數據寫入到目標文件中

經過以上7個步驟,終于告一段落,完成上司安排的任務了,現在一起看看這整個實現代碼是如何寫的?

import csv # 導入csv模塊# 設置保存文件路徑employee_path = C:/Users/80491/Desktop/員工職位表.csv# 設置存放所有員工表的路徑employees_path = C:/Users/80491/Desktop/demo/# 以讀的方式打開員工職位表這個文件with open(employee_path, r, newline=) as employee_file: # 將文件對象轉換為DictReader對象 employee_csv = csv.DictReader(employee_file) # 將csv對象的表頭給讀出來,fieldnames的作用是設置csv文件的第一行表頭數據 headers = employee_csv.fieldnames # 打印表頭信息 print("里面的表頭為:{}".format(headers)) # 遍歷除了表頭之外的每一行數據 for data_row in employee_csv: filename = data_row[名稱] .csv # 獲取文件名 filepath = employees_path filename # 獲取新的文件路徑 print(filepath) # 獲取所有的csv文件路徑并打印在終端上顯示 # 以寫的方式打開文件 with open(filepath, w, newline=) as employees_file: # 這一塊很重點,是將文件對象轉換為DictWriter對象 target_files = csv.DictWriter(employees_file, fieldnames=headers) # 然后寫入表頭中 target_files.writeheader() # 最后將數據寫入到目標文件中 target_files.writerow(data_row)

目前,這個demo是空的文件夾,什么都沒有,現在,運行上面的整體代碼:

excel如何讀取csv文件(想提高工作效率)(13)

發現pycharm編輯器終端上顯示的信息已經全部打印出來:

excel如何讀取csv文件(想提高工作效率)(14)

再看看剛才那個demo文件有何變化?發現有csv表格文件存進去了:

excel如何讀取csv文件(想提高工作效率)(15)

excel如何讀取csv文件(想提高工作效率)(16)

總結:

上面的兩個任務總體完成了,這兩個要求要實現的代碼除注釋除外,代碼量很少,僅僅幾十行而已,卻能讓你提高工作效率,提早完成上司的要求。說不準,反而還更容易受到上司的愛戴,認為你真的可行,交代事情很靠譜,辦事快。所以類似這種簡單的要求,這些技巧多少還是得學會的。知識和技能是一點點長進的,追求每天都學一點,吸收-實踐-溫故...彼此循環。

對于學習編程語言,下面的這句話很是有道理,和大家共勉之。學到很多東西的訣竅,就是一下子不要學很多。——洛克

歡迎分享轉載→http://m.avcorse.com/read-235254.html

Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖