版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第三章
數(shù)據(jù)文件操作本章學習目標:(1)了解文件的基本概念;(2)掌握文件的打開和關(guān)閉、讀寫以及文件定位基本操作;(
3
)
學
會
用with語句打開文件;(
4
)
掌
握cSv文件、json
文件、Word
文件、Excel文件的讀寫操作。?本章學習目標
第三章數(shù)據(jù)文件操作2在Python
程序中,我們可以通過文件實現(xiàn)對數(shù)據(jù)的輸入/輸出。文件的輸入/輸出是指從已有的文件中讀取數(shù)據(jù),并將處理結(jié)果按照一定格式輸出到文件中,適用于大批量的數(shù)據(jù)處理要求。在處理過程中,我們經(jīng)常需要處理各種形式的文件,如csv、json
、Word和Excel文件等。對于這些文件,我們需要找到合適的方式進行處理。本章將首先介紹文
件操作常用方法和with語句,然后介紹一些常用格式文件的讀寫操作。?本章學習目標
第三章數(shù)據(jù)文件操作
33.1數(shù)據(jù)文件操作基礎(chǔ)3.2
CSV文件讀寫3.3
●
json文件讀
寫3.4
o
Word、Excel文件讀
寫內(nèi)容導航CON
TEN
T
S文件打開(open)01文件的打開和關(guān)閉
打開文件,創(chuàng)建文件對象,再利用所創(chuàng)建的文件對象進行文件操作。當文件處理
完畢之后,應該關(guān)閉文件,釋放內(nèi)存空間。文件使用02文件的讀取打開一個文本文件或二進制文件后,
可以向文件中寫入文本內(nèi)容。(執(zhí)行讀、寫、定位等操作)文件關(guān)閉03文件的寫入打開一個文本文件或二進制文件后,可以向文件中寫入文本內(nèi)容。(close)04文件的定位創(chuàng)建一個文件對象后,可以獲取文件當前的位置,也可以定位到文件指定讀寫位置。包括兩種類型:文本文件和二進制文件。本章主要是介紹如何對文本文件進行操作。程序中對文件的操作一般包括:打開文件、讀取文件、寫入文件、關(guān)閉文件等,即:?
3.1.1文件操作常用方法第三章數(shù)據(jù)文件操作5文件指的是在計算機存儲設(shè)備中的一組數(shù)據(jù)序列,不同類型的文件通過不同的文件后綴進行區(qū)別。文件文件的打開與關(guān)閉在Python
中,需要使用內(nèi)置函數(shù)open()打開文件,創(chuàng)建文件對象,再利用所創(chuàng)建的文件對象進行文
件操作。當文件處理完畢之后,應該關(guān)閉文件,文件的關(guān)閉需要使用close()方法。語法格式如下:open(file,mode,encoding)fileobject=open(file,mode,encoding)fileobject.close()主要參數(shù)如下:FileNotFoundError:以只讀模式打開不●
file:
文件名文件路徑(絕對或相對),定位目標文件。
存在的文件?!?/p>
fileobject:文件對象名OSError:其他與文件打開相關(guān)的系統(tǒng)錯●
mode:打開模式(如
'r','w'),
默認為
“r”
(只讀模式)°誤?!?/p>
encoding:
編碼格式(如'utf-8'),
僅用于文本模式進行操作??
3.1.1文件操作常用方法第三章數(shù)據(jù)文件操作6ValueError:在一個文件關(guān)閉后還對其常見異常:模式作用"r"只讀模式。若指定文件不存在,將拋出FileNotFoundEror異常"w"覆蓋寫模式。若指定文件不存在,則自動創(chuàng)建:若存在,則清除原來的內(nèi)容重寫“x”創(chuàng)建寫模式。與“w”方式不同的是,如果指定文件不存在,則新建;如果存在,則拋出
FileExistsError異常。不會誤清除原來文件的內(nèi)容,可以更安全地操作文件“a”追加寫模式。如果指定文件不存在,則新建;如果文件已經(jīng)存在,打開后,在文件末尾寫入數(shù)據(jù)“+”結(jié)合其他模式使用(如“r+”、“w+”和“a+”等),以讀寫方式打開文件。文件打開后,可以讀寫文件“b”結(jié)合“r”、“w”和“a”等模式使用(如“rb”、"wb”和“ab”等),以二進制模式打開文件可以讀寫字節(jié)類型的數(shù)據(jù)。不使用“b”,則以文本模式打開文件??
3.1.1文件操作常用方法
第三章數(shù)據(jù)文件操作
7思考:文件有哪些打開模式呢?詳見表3-1。表3-1文件打開模式表●readline():
返回一個字符串,內(nèi)
●
容為文件的當前一行●語法格式:
●fielobject.readline([size])變量名=fielobject.readline([size])readlines():一次讀取文件多行,并返回一個列表語法格式:fielobject.readlines([size])變量名=fielobject.readlines([size])●fileobject:
文件對象變量名●size:
表示讀取的字符數(shù)(可以省略)。如果省略size
參數(shù),則默認讀取文件所有內(nèi)容并返回。如
果已到達文件的末尾,
read()將返回一個空字符串("")?!?/p>
read():從當前位置讀取內(nèi)容
為指定數(shù)量的文本并返回一個
字符串●
語法格式:fielobject.read([size])變量名=fielobject.read([size])??
3.1.1
文件操作常用方法
第三章數(shù)據(jù)文件操作8
read()
readline()
readlines()文件的讀取購藥時間藥品編碼藥品名稱銷售量(盒)藥品價格(元)2023-10-05星期四ZCM013健胃消食片2
25.22023-11-16星期四ZCM013健胃消食片12.62023-11-05星期六MED008復方甘草口服溶液8.822023-10-03星期二ZCM002健胃消食口服液3
542023-10-03星期二ZCM002健胃消食口服液3
542023-10-12星期四DRG014婦科千金片282023-06-12星期一ZCM014氫氯噻嗪片1002023-06-11星期日ZCM013健胃消食片2
25.22023-10-12星期四ZCM013健胃消食片1
12.62023-11-03星期四ZCM013健胃消食片2
25.22023-06-10星期六2023-06-09星期五ZCM012
ZCM011硝酸甘油片蒙脫石散359.82023-06-08星期四ZCM010頭孢克洛干混懸劑702023-06-05星期一ZCM007維生素C泡騰片702023-06-04星期日ZCM006布洛芬緩釋膠囊62.42023-10-05星期四ZCM006布洛芬緩釋膠囊41.62023-10-12星期四ZCM006布洛芬緩釋膠囊20.82023-06-03星期六ZCM005氯雷他定糖漿25例3-1:文件讀取示例在操作之前,利用記事本創(chuàng)建文件“藥品銷售數(shù)據(jù).txt”,
文件內(nèi)容如圖3-1所示:??
3
.
1
.
1文件操作常用方法
第三章數(shù)據(jù)文件操作
9圖3-1“藥品銷售數(shù)據(jù).txt”文件#以只讀模式打開文件,并把文件賦值給變量file
file=open("/home/mw/input/medicine1934/
藥品銷售數(shù)據(jù).txt","r")#調(diào)用read()方法,讀取文件的全部內(nèi)容,并賦值給字符串變量texttext=file.read()print(text)#調(diào)用print()輸出文件中的內(nèi)容,運行結(jié)果如圖3-2所示購藥時間
藥品編碼2023-10-05
星期四
ZCM0132023-11-162023-11-052023-10-032023-10-032023-10-122023-06-122023-06-112023-10-122023-11-03ZCM012ZCM011藥品名稱銷售量(盒)健胃消食片健胃消食片復方甘草口服溶液健胃
消
食口
服
液
3健胃
消
食
口
服
液
3婦科千金片氫氯噻嗪片健胃消食片健胃消食片健胃消食片硝酸甘油片蒙脫石散??
3.1.1文件操作常用方法
第三章數(shù)據(jù)文件操作
102023-06-08星期四2023-06-04星期日2023-10-05
星期四2023-10-12星期四2023-06-03星期六ZCM010ZCM007ZCM006ZCM006ZCM006ZCM005頭孢克洛干混懸劑
維生素C泡騰片2
布洛芬緩釋膠囊布洛芬緩釋膠囊
布洛芬緩釋膠囊
氯雷他定糖漿1□思考:如何調(diào)用readline()方法讀取”藥品銷售數(shù)據(jù)
.txt”
文
件
內(nèi)
容
呢
?圖3-2
調(diào)
用read()方法讀取文件內(nèi)容的運行結(jié)果運行代碼如下:9.
8
7062.441.620.8星期四星期六
星期二
星期二星期四星期一星期日
星期四
星期四藥品價格(元)8.82ZCM013MED008ZCM002ZCM002DRG014ZCM014ZCM013ZCM013ZCM01325.212.6154542810025.212.625.2352023-06-10星期六2023-06-09星期五27025#以只讀模式打開文件,并把文件賦值給變量filefile=open("/home/mw/input/medicine1934/
藥品銷售數(shù)據(jù).txt","r")#文件對象調(diào)用readline()方法,讀取文件的全部內(nèi)容,并賦值給字符串變量texttext=file.readline()print(text)#調(diào)
用print()
輸出文件中的內(nèi)容,運行結(jié)果如圖3-3所示
?
3.1.1文件操作常用方法第三章數(shù)據(jù)文件操作
11運行代碼如下:購
藥
時間
藥品
編
碼
藥
品
名
稱
銷
售
量(
盒
)藥
品
價
格(
元
)圖3-3調(diào)用readline()方法讀取文件內(nèi)容的運行結(jié)果將一個序列中的多個字符串一次性寫入到文件中,語法結(jié)構(gòu)如下:fileobject.writelines(seq)●fileobject:用open()函數(shù)打開文件時返回的文件對象●seq
:
要寫入到文件中的文本內(nèi)容,也是一個字符串列表對象。將字符串內(nèi)容寫入到文件中,并返回寫入的字符數(shù),語法結(jié)構(gòu)如下:●寫入的文件存在且非空:則將原文
fileobject.write(str)
件內(nèi)容清空,然后寫入新的內(nèi)容。?3.1.1文件操作常用方法第三章數(shù)據(jù)文件操作
12●
注意:write()、writelines()寫入到文件中的內(nèi)容不會自動換行,如需
換行,則要自行添加換行符“\n”●寫入的文件不存在:則創(chuàng)建新文件寫入數(shù)據(jù)。核心要點write()writelines()文件的寫入file=open("file2.txt","w")#創(chuàng)建
一個“file2.txt”文件,并以只寫模式打開file.write("hello
world!\n")#將字符串"hello
world!\n"寫入到file2.txt
中并進行換行file.writelines(("this
is
a\n","file
exampe!")#寫入字符串并進行換行file.close()#
關(guān)閉文件hello
world!this
is
afile
example!??
3.1.1文件操作常用方法第三章數(shù)據(jù)文件操作
13例3-2:文件寫入示例,運行代碼如下:運行結(jié)果如下:使用文件對象的seek()方法定位到文件的指定讀寫位置,語法格式如下:fileobject.seek(offset[,whence])seek()方法返回一個整數(shù),表示當前文件指針的位置●
offset:
偏移量,用于指定相對于參考點移動的字節(jié)
數(shù)?!?/p>
whence
:
參考點,是一個可選的參數(shù)(可省略),
用于指定文件指針移動的參考位置。whence
默認值為0,表示以文件開頭作為參考點。文件的定位在創(chuàng)建一個文件對象后,可以調(diào)用文件對象的tell()方法獲取文件當前的位置,語法結(jié)構(gòu)如下fieobject.tell()tell()方法會返回一個數(shù)字,數(shù)字表示當前文件指針所在位置?3.1.1文件操作常用方法
第三章數(shù)據(jù)文件操作
14file=open("example.txt","w")#以只寫模式打開文件,創(chuàng)建一個文件對象file.tell()#
打開文件,獲取文件文件指針的位置,運行結(jié)果為0file.write("Python")#
將
“Python”
寫入文件file.tell()#獲取文件指針的當前位置,運行結(jié)果為6
?
3.1.1
文件操作常用方法
第三章數(shù)據(jù)文件操作
15例3-3:文件定位讀寫示例例3-4:文件定位讀寫示例fil=open("example1.txt","w+")#以讀寫模式創(chuàng)建文件對象fil.write("python程序設(shè)計xxxx")#
將“python程序設(shè)計xxxx”寫入文件
fil.seek(0)#將文件指針移動到文件開頭?3.1.1文件操作常用方法
第三章數(shù)據(jù)文件操作filouput=fil.read()print(filouput)fil.close()#讀取文件內(nèi)容#打印讀取的內(nèi)容
#關(guān)閉文件運行結(jié)果如下:python程序設(shè)計xxxx□思考:若要從指定位置讀取文件內(nèi)容,該如何操作呢?16若要從指定位置讀取文件內(nèi)容,示例代碼如下:file=open("example1.txt","w+")#以讀寫模式創(chuàng)建一個文件對象file.write("python程序設(shè)計xxxx")
#將
“python
程序設(shè)計xxxx”寫入文件file.seek(1)#省略whence,
移動文件指針到第2個字節(jié)位置file.read()#從指定文件位置讀取文件內(nèi)容"ython程序設(shè)計xxxx"?
3.1.1文件操作常用方法第三章數(shù)據(jù)文件操作運行結(jié)果如下:17前面在介紹文件操作時,提到打開的文件最后一定要關(guān)閉,否則程序的運行會造成意想不到的隱患。但是,如果在打開文件或文件操作過程中出現(xiàn)了異常,將無法及時關(guān)閉文
件。為了更好地避免此類問題,
Python
引入with語句。無論在文件操作期間是否出現(xiàn)異
常,使用with()語句操作已經(jīng)打開的文件對象,都能保證關(guān)閉已經(jīng)執(zhí)行完畢的文件。?
3.1.2
With語句
第三章數(shù)據(jù)文件操作
18with語句又稱上下文管理器,在處理已經(jīng)打開的文件時,無論是否產(chǎn)生異常,都能保證關(guān)閉已經(jīng)執(zhí)行完畢的文件,無需手動操作。with()語句的語法格式如下:with
上下文表達式[as
target]:對象的操作●
上文表達式:指的是返回一個上下文管理器對象,上下文管理器對象負責管理一些資源的進入和
退出過程?!馵as
target]:[內(nèi)的部分可以使用,也可以省略。如果with語句后跟著as子句,則
enter
()
方法的返回值會被賦值給target指定的變量。資源對象可以是單個變量,也可以是元組?!?/p>
對象的操作:是with語句中的代碼塊,如果代碼塊不想執(zhí)行任何語句,可以直接用pass
語句。?3.1.2
With語
句
第三章數(shù)據(jù)文件操作
19例3-5:使用with
語句操作文件對象的示例在操作之前,利用記事本創(chuàng)建文件example2.txt,
文件內(nèi)容如圖3-4所示:Python
語言是一種簡潔而強大的語言,相比其他高級語言,他的語法簡潔質(zhì)樸、可以用優(yōu)美來形容(例如,C語言要寫100行代碼才能完成的任務(wù),Python可能只要10行)。
更關(guān)鍵的,它是一種開源的腳本語言,Python
開放社區(qū)為我們提供了超過12萬個不同功
能的開源函數(shù)庫,為快速開發(fā)提供了強大支持。圖3-4
文件example2.txt中的內(nèi)容??3.1.2With語句
第三章數(shù)據(jù)文件操作
20運行結(jié)果如下:Python語言是一種簡潔而強大的語言,相比其他高級語言,他的語法簡潔質(zhì)樸、可以用優(yōu)美來形容(例如,
C語言要寫100行代碼才能完成的任務(wù),
Python可能只要10行)。更關(guān)鍵的,它是一種開源的腳本語言,Python開放社區(qū)為我們提供了超過12萬個不同功能的開源函數(shù)庫,為快速開發(fā)提供了強大支持。圖3-5例3-5的運行結(jié)果上述示例使用with語句打開文件,則將文件對象賦值給file,然后調(diào)用read()方法讀取了file對象的數(shù)據(jù)。當對文件的操作結(jié)束以后,with
語句會關(guān)閉文件。withopen("/home/mw/input/example9341/example2.txt")asfile:data
=file.read()#文件在這里會自動關(guān)閉,無需顯式調(diào)用file.close()print(data)?3.1.2
With語
句
第三章數(shù)據(jù)文件操作
21運行代碼如下:3.1
數(shù)據(jù)文件操作基礎(chǔ)3.2
CSV文件讀寫3.3
json文件讀寫3.4
Word、Excel文件讀寫內(nèi)容導航CON
TEN
T
SCSV(Comma-Separated
Values,逗號分隔值)文件是一種文本文件格式,其文件以純文本形式存儲表格數(shù)據(jù)(數(shù)字和文本)。CSV文件內(nèi)容默認使用逗號分隔且均為
字符串,默認使用Excel軟件打開,也可以使用其他文本編輯器打開。操作cSv文件需
要先引入CSv模塊,Csv為Python的內(nèi)置模塊,用import語句導入,導入格式如下:importcsV?
3.2
csv文件讀寫
第三章數(shù)據(jù)文件操作
23CSV文件讀取主要是reader()方法,reader
方法會根據(jù)打開的文件對象返回一個可迭代對象,然后遍歷這個對象讀取CSv文件中每一行數(shù)據(jù)。語法結(jié)構(gòu)如下:Csv.reader(csvfile,dialect=”Excel”,**fmtparams)●csvfile
:可以是文件(file)對象或者列表(list)對象,必須是可迭代對象?!?/p>
dialect:編碼風格,默認為Excel的風格,用逗號(,)分隔?!?/p>
fmtparams:是格式化參數(shù),用來覆蓋之前dialect對象指定的編碼風格。??
3.2.1csv文件讀取第三章數(shù)據(jù)文件操作
24延伸:關(guān)于dialect
方式自定義dialect
方式支持自定義,通過調(diào)用register_dialect()方法注冊,語法格式如下:Csv.register_dialect(name,[dialect,]**fmtparams)●
name:是自定義編碼風格的名字,默認的是Excel,可以自定義成mydialect?!?/p>
[dialect,]**fmtparams:是編碼風格格式參數(shù),如分隔符(默認是逗號)或引號等。
dialect
方式通過調(diào)用unregister_dialect()方法注銷自定義的編碼風格。語法格式如下:Csv.unregister_dialect(name)●name:是自定義編碼風格的名字,默認的是Excel,
可以自定義成mydialect。?
3.2.1
csv文件讀取
第三章數(shù)據(jù)文件操作25在cSv模塊中文件寫入的方法主要是writer()。語法格式如下:CSV.writer(csvfile,dialect=“Excel”,**fmtparams)參數(shù)含義同reader()
方法。在CSv模塊中還提供了writerow()和writerows()兩個方法向cSv文件寫入數(shù)據(jù):●
writerow()
方
法
:一次寫入一行數(shù)據(jù),程序運行結(jié)束后會在當前路徑下創(chuàng)建一個“user_info.csV”
文
件
。●
writerows()
方
法
:一次寫入多行數(shù)據(jù)。注
意
:在文件寫入過程中,如果CSv文件不存在,則會新建cSv文件;如果cSv文件存在,則會清空csv文件中的內(nèi)容重新寫入。?3.2.2
csv文件寫入
第三章數(shù)據(jù)文件操作
26import
csV#導入CSV庫content=[[1,"male",25,"氣虛"],[2,"female",34,"血虛"],[3,"male",38,"
痰濕"]]f=open("content.csv",mode
="w",newline="")data=CSv.writer(f)
#生成writer對象data.writerows(content)
#
將數(shù)據(jù)寫入文件f.close()
#關(guān)閉文件)ABCD11male25氣虛22female34血虛33male38痰濕?
3.2.2csv文件寫入
第三章數(shù)據(jù)文件操作
27例3-
6:使用CSv文件操作的示例
代碼執(zhí)行結(jié)果:圖3-6例3-6的運行結(jié)果3.1
數(shù)據(jù)文件操作基礎(chǔ)3.2
CSV文件讀寫3.3
json
文件讀●
Word、Excel文件讀寫內(nèi)容導航CON
TEN
T
Sjson
是一種輕量級的數(shù)據(jù)交換格式,使用非常廣泛。與Python
中的字典非常相似,json
也是以鍵值對的形式保存數(shù)據(jù),但json中每個鍵值對的鍵必須是字符串類型,值可以是多種類型,
例如字符串、數(shù)字、列表、元組、字典等。在Python
中操作json格式數(shù)據(jù)要引入json
模
塊
,
json
模塊提供了豐富的json數(shù)據(jù)的操作函數(shù),常用函數(shù)如下:(1)dumps:
將Python數(shù)據(jù)轉(zhuǎn)換為json編碼的字符串;(2)dump:
將Python數(shù)據(jù)轉(zhuǎn)換為json編碼的字符串,并寫入json
文
件
;(3)loads:
將json編碼的字符串轉(zhuǎn)換為Python的數(shù)據(jù)類型;(4)load:
從json文件中讀取數(shù)據(jù),并將json編碼的字符串轉(zhuǎn)換為Python的數(shù)據(jù)結(jié)構(gòu)。?3.3
json文件讀寫
第三章數(shù)據(jù)文件操作
29例3-7:將Python
數(shù)據(jù)轉(zhuǎn)換為json
編碼的字符串并寫入文件,然后從文件中讀取json字符串。import
json
#導入json
庫user={"name":"Amy","age":23}#
創(chuàng)建一個用戶字典print(type(user))#輸出字典的類型json_str=json.dumps(user)#
將字典轉(zhuǎn)換為json
字符串print(type(json_str))#輸出字符串的類型print(json_str)#
輸出json字符串#將字典寫入到j(luò)son
文件中with
open("json.json","w")as
f:json.dump(user,f)?
3.3
json文件讀寫
第三章數(shù)據(jù)文件操作
30#
從json
文件中讀取字典with
open("json.json")as
f:json_dict
=json.load(f)#確保這里的縮進是正確的print(type(json_dict))#輸出讀取后的字典類型print(json_dict)#輸出讀取后的字典內(nèi)容<class
'dict'><class'str'>{"name":"Amy","age":23}<class
'dict'>{'name':'Amy','age':23}3.3
json文件讀寫
第三章數(shù)據(jù)文件操作
31運行結(jié)果如下:3.1數(shù)據(jù)文件操作基礎(chǔ)3.2
csv文件讀寫json文件讀寫3.4
o
Word
、Excel文件讀寫內(nèi)容導航CON
TEN
T
S!pip
install
python-docxfrom
docx
import
Documentdocument=Document()#
創(chuàng)建一個新的Word
文檔document.add_heading("中醫(yī)藥基礎(chǔ)知識",O)#添加一個中醫(yī)藥相關(guān)的標題#添加中醫(yī)藥相關(guān)的段落p=document.add_paragraph("中醫(yī)藥,作為中國傳統(tǒng)醫(yī)學的重要組成部分,")Word
是Office辦公軟件之一,主要作用是編輯文檔,所以平常辦公時Word
的使用頻率也是非常高的。Python
讀寫Word
文件需要第三方庫Python-docx
擴展支持。Python-docx
是一個免費的開源庫,安裝代
碼如下:pip
install
Python-docx下面通過例子來說明Word
寫入的代碼,代碼如下:?
3.4.1
Word文件讀寫
第三章數(shù)據(jù)文件操作
33p.add_run("
蘊含著豐富的理論和治療方法,")p.add_run("
旨在通過調(diào)節(jié)人體內(nèi)部環(huán)境來達到治療疾病和保健的目的。").bold=True#bold=True
為對文字進行加粗p.add_run("中醫(yī)強調(diào)“陰陽平衡”和“五行相生相克”的理念,").italic=True#italic=True
為將文字設(shè)置為傾斜#添加一個中醫(yī)藥相關(guān)的表格table=document.add_table(rows=1,cols=3)hdr_cells
=table.rows[0].cellshdr_cells[0].text="中藥名稱"hdr_cells[1].text="功效"hdr_cells[2].text="用法用量"?
3.4.1Word文件讀寫
第三章數(shù)據(jù)文件操作#添加行和單元格到表格中,包含中醫(yī)藥信息fori,nameinenumerate(["人參","黃芪","當歸"],start=1):row_cells=table.add_row().cellsrow_cells[0].text=nameifname
=="人參":row_cells[1].text="大補元氣,復脈固脫,補脾益肺,生津養(yǎng)血,安神益智。"elif
name
=="黃芪":row_cells[1].text="補氣升陽,固表止汗,利水消腫,生津養(yǎng)血,行滯通痹,托毒排膿,斂瘡生肌。"else:row_cells[1].text
="補血活血,調(diào)經(jīng)止痛,潤腸通便。"row_cells[2].text=f"具體用法用量請咨詢中醫(yī)師。"document.save("
中醫(yī)藥基礎(chǔ)知識.docx")#
保存文檔?3.4.1
Word文件讀寫
第三章數(shù)據(jù)文件操作
35在上述例子中:1.創(chuàng)建生成臨時Word
對象。2.
add_paragraph()和add_heading():添加標
題和正文內(nèi)容。3.add_runs().bold
和add_run().italic
:p對象
的屬性設(shè)置為True,
設(shè)置的字體加粗和斜體4.add_picture()和add_table():
插入圖片和添
加表格5.完成數(shù)據(jù)寫入,需要將Word對象保存成Wor
d文件。中藥名稱功效用法用量人參大補元氣,復脈固脫,補脾
益肺,生津養(yǎng)血,安神益智
。具體用法用量請咨詢中醫(yī)
師。黃芪補氣升陽,固表止汗,利水
消腫,生津養(yǎng)血,行滯通痹,托毒排膿,斂瘡生肌。具體用法用量請咨詢中醫(yī)師。當歸補血活血,調(diào)經(jīng)止痛,潤腸
通便。具體用法用量請咨詢中醫(yī)
師。?3.4.1
Word文件讀寫
第三章數(shù)據(jù)文件操作
36中醫(yī)藥,作為中國傳統(tǒng)醫(yī)學的重要組成部分,蘊含著豐富的理論和治療方法,旨在通過調(diào)
節(jié)人體內(nèi)部環(huán)境來達到治療疾病和保健的目的。
中醫(yī)強調(diào)“陰陽平衡”和“五行相生相克”的
理念,代碼運行結(jié)果如下:中醫(yī)藥基礎(chǔ)知識圖3-7例3-8的運行結(jié)果在右側(cè)代碼中,Word文件中讀取數(shù)據(jù)的過程通常涉及以下幾個關(guān)鍵步驟。1.需要生成Word
對象,并指向Word
文件。2.使
用for
語句遍歷Word
文檔中的所有段落。
paragraphs
對
象
:代表文檔中所有段落的集合,使用
paragraphs()
獲
取Word
對象全部內(nèi)容,集合中的每
一個元素是一個paragraph
對象,代表一個段落。3.run
對
象
:指的是具有相同樣式的一段連續(xù)文本,
runs
對象則是run對象的集合。4.第5行代碼中的text
是run
對象的屬性,代表對象中
的文本內(nèi)容。from
docx
import
Document
doc=Document()for
para
in
doc.paragraphs:for
run
in
para.run:print(run.text)Word
文件讀取與寫入Word
數(shù)據(jù)相比,讀取Word
數(shù)據(jù)相對簡單,直接獲取
數(shù)據(jù)即可,代碼如下:?
3.4.1
Word文件讀寫第三章數(shù)據(jù)文件操作
37如果Word文檔中含有表格,則無法通過paragraphs對象直接讀取,而要通過tables對象來讀取。代碼如下:fromdocx
import
Documentdoc=Document()forrow
intables.rows:for
cell
in
row.cells:print(cell.text)在Word
文件中讀取數(shù)據(jù),首先需要生成Word
對象,并指向Word
文件。然后,使用for
語句遍歷Word文檔中的所有表格。rows
對象代表文檔中所有表格的集合,集合中的每一個元素是一個row
對象,代表
一個表格。
cells
對象是一個集合,通常表示為一個列表,它包含了表格中某一行的所有單元格(cell)。?3.4.1
Word文件讀寫
第三章數(shù)據(jù)文件操作
38代碼的含義import
openpyxl
#導入openpyxl
庫file=”file1_name.xlsx”
#Excel文件為"file1_name.xlsx"wa=openpyxl.load_workbook(file)#
使用openpyxl.load_workbook()
函數(shù)來加載Excel文件fromopenpyxl
importWorkbookwb=Workbook()
#創(chuàng)建一個新的工作簿W(wǎng)S=wb.active
#選擇活動的工作表ws["A1"]="Hello,World!"
#
在單元格A1中寫入數(shù)據(jù)#保存工作簿Excel文件是常見的數(shù)據(jù)處理表格文件,要讀寫Excel文件,用戶需要安裝一個專用的庫,例如開源的openpyxl、xlrd、pandas等。本小節(jié)主要介紹利用openpyxl庫進行Excel文件讀寫操作。在使用openpyxl
之前可使用
“import
openpyxl”
導入openpyxl
庫,也可以使用
“from
openpyxlimport
Workbook”
只調(diào)用其中的Workbook模塊。示例代碼如下:?
3.4.2
Excel文件讀寫
第三章數(shù)據(jù)文件操作
39!pip
isntall
openpyxlfrom
openpyxl
import
load_workbookworkbook=load_workbook(filename="/home/mw/input/zhongyiyaodata8002/中醫(yī)藥數(shù)
據(jù)
.xlsx")#
加載包含中醫(yī)藥數(shù)據(jù)的工作簿sheet
=workbook["中藥信息"]#選擇特定名稱的工作表,有一個名為"中藥信息"的工作表?
3.4.2
Excel文件讀寫
第三章數(shù)據(jù)文件操作
40下面通過例子來說明Excel文件讀取。在操作之前,利用創(chuàng)建文件“中醫(yī)藥數(shù)據(jù).xlsx”,
文件內(nèi)容如下圖3-8所示:4
ABCDE1中藥名稱性味歸經(jīng)功效主治2人參甘、微苦,溫歸脾、肺、心經(jīng)大補元氣,復脈固脫體虛欲脫,肢冷脈微,脾虛食
少3黃芪甘,微溫歸脾、肺經(jīng)補氣升陽,固表止汗氣虛乏力,食少便溏,中氣下
陷4當歸甘、辛,溫歸肝、心、脾經(jīng)補血活血,調(diào)經(jīng)止痛血虛萎黃,眩暈心悸,月經(jīng)不調(diào)5枸杞甘,平歸肝、腎經(jīng)滋補肝腎,益精明目肝腎陰虛及早衰證,如腰膝酸
痛
,眩暈耳鳴6陳皮苦、辛,溫歸肺、脾經(jīng)理氣健脾,燥濕化痰脾胃氣滯證,嘔吐,呃逆,濕
痰,寒痰咳嗽運行代碼如下:?
3.4.2
Excel文件讀寫
第三章數(shù)據(jù)文件操作
41#讀取特定單元格的值,例如A1單元格可能包含中藥名稱cell_value
=sheet["A1"].valueprint(f"中藥名稱:{cell_value}")#獲取第一行的數(shù)據(jù)(列表形式),假設(shè)第一行是列標題row_data
=[cell.value
for
cell
in
sheet[1]]print("
列標題:",row_data)#獲取第一列的數(shù)據(jù)(中藥名稱),需要遍歷所有行col_names
=[sheet.cell(row=i,column=1).value
for
i
in
range(2,sheet.max_row+1)]#
假設(shè)第一行是標題,從第二行開始讀取數(shù)據(jù)print("中藥名稱列表:",col_names)#遍歷整個工作表,打印出中醫(yī)藥的相關(guān)信息for
row
in
sheet.iter_rows(min_row=2,max_row=6,max_col=5):#
假設(shè)第一行為標題行,從第二
行開始遍歷row_data
=[cell.value
for
cell
in
row]print("
中醫(yī)藥信息:",row_data)#這里假設(shè)每行都包含了完整的中醫(yī)藥信息workbook.close()#關(guān)閉工作簿(通常
Python
會在腳本結(jié)束時自動關(guān)閉)運行結(jié)果如圖所示:中藥名稱:編號列標題:['編號','中藥名稱','性味','歸經(jīng)']中藥名稱列表:[1,2,3,4,5,6]中醫(yī)藥信息:[1,'人參','甘、微苦,溫','歸脾、肺、心經(jīng)',None]中醫(yī)藥信息:[2,'黃芪','甘,微溫','歸脾、肺經(jīng)',None]中醫(yī)藥信息:[3,'當歸','甘、辛,溫','歸肝、心、脾經(jīng)',None]中醫(yī)藥信息:[4,'枸杞','甘,平','歸肝、腎經(jīng)',None]中醫(yī)藥信息:[5,'陳皮','苦、辛,溫','歸肺、脾經(jīng)',None]?
3.4.2
Excel文件讀寫
第三章數(shù)據(jù)文件操作
42由上述示例可知,Excel文件的讀取首先需要生成Excel工作簿對象,并指向Excel文件。然后,通過active()屬性和指定工作表的名稱兩種方式選擇想要讀取的工作表,指定單元格的坐標
(如“A1”)來讀取單元格的值,可以利用行索引(數(shù)字)來獲取數(shù)據(jù)(通常以列表的形式返回)。
如果要讀取列的數(shù)據(jù),則可以遍歷工作表中的所有行,并獲取每行中指定列的單元格的值。注意:在iter_rows()
方法中,max_col參數(shù)實際上是限制列數(shù)的,而不是“最大列”的意思。如果需要遍歷所有列,可以省略這個參數(shù)或者設(shè)置一個足
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年餐飲管理服務(wù)合作合同協(xié)議
- 2026年互聯(lián)網(wǎng)重大疾病保險合同
- 個人房產(chǎn)抵押借款合同2026年版本
- 2026年2026年線下紡織品購銷合同
- 2026年無人機信息安全合同
- 2026年知識產(chǎn)權(quán)許可使用備案合同協(xié)議
- 通信線路鋪設(shè)合同協(xié)議2026年跨區(qū)域合作協(xié)議
- 2026年母嬰用品樣品采購合同協(xié)議
- 2026年倉儲貨物交接合同
- 菜市場攤位租賃合同2026年保證金條款說明
- 2025及未來5年中國水電解氫氧發(fā)生器市場調(diào)查、數(shù)據(jù)監(jiān)測研究報告
- 解除勞動合同證明書(正式版本)共12份
- 綠色環(huán)保1000噸年廢塑料回收與改性加工項目規(guī)模及運營模式可行性研究報告
- 點菜英語教學課件
- 2025年事業(yè)單位筆試-河北-河北藥學(醫(yī)療招聘)歷年參考題庫含答案解析(5卷套題【單選100題】)
- 中醫(yī)骨科適宜技術(shù)
- 空間計算發(fā)展報告(2024年)-元宇宙標準化工作組
- 2025《混凝土攪拌站勞動合同》
- 售樓部裝飾設(shè)計合同協(xié)議
- 煤礦皮帶輸送機跑偏原因和處理方法
- 創(chuàng)傷后應激障礙的心理護理
評論
0/150
提交評論