推薦序
你會(huì)不會(huì)像我一樣喜歡這本書(shū)?
●Python, 我對(duì)它好奇已很久
伴隨著爬蟲(chóng)、云計(jì)算、大數(shù)據(jù)、人工智能等一波波狂歡風(fēng)口,其中有一個(gè)讓任何碼界新老民工都無(wú)法忽視的存在,那就是Python。不就是一種開(kāi)發(fā)語(yǔ)言嗎?但是:
爬蟲(chóng),為什么是Python,而不是C、Java……?
云計(jì)算,為什么是Python,而不是C、Java……?
大數(shù)據(jù),為什么是Python,而不是C、Java……?
人工智能,為什么是Python,而不是C、Java……?
更讓人詫異的是,不久前我與著名嵌入式開(kāi)發(fā)專(zhuān)家楊國(guó)華教授一起討論工作時(shí)了解到,Python在嵌入式開(kāi)發(fā)領(lǐng)域也正在攻城略地,大有燎原之勢(shì)。嵌入式開(kāi)發(fā)領(lǐng)域不是C家的后院么?
作為一名專(zhuān)職的計(jì)算機(jī)圖書(shū)編輯,于公于私,我覺(jué)得是時(shí)候要深入了解一下Python了。當(dāng)然,基于我對(duì)自己深刻了解(缺腦),我采用了最笨但也最適合我的方法去了解Python,那就是親自去學(xué)一學(xué)、用一用。所以,依照網(wǎng)上書(shū)店的銷(xiāo)售排行買(mǎi)了我的第一本英文翻譯版的Python書(shū),結(jié)果枯澀且錯(cuò)誤百出的翻譯耗掉了我為數(shù)不多的耐心。我又選了些國(guó)產(chǎn)的Python書(shū),或枯燥或無(wú)用或超出了我的理解能力……我的要求不高,你只要能讓我順順利利地比照書(shū)上內(nèi)容做出點(diǎn)東西來(lái)就行,如爬蟲(chóng)、抓個(gè)網(wǎng)頁(yè)或者做個(gè)人臉識(shí)別什么的……
但作為編輯,而且是專(zhuān)業(yè)的計(jì)算機(jī)圖書(shū)編輯,我對(duì)圖書(shū)的這種狀況雖然不滿(mǎn)但還是能理解。我知道,想出版一本能讓沒(méi)有編程經(jīng)驗(yàn)的人好學(xué)好懂又有趣的Python書(shū),肯定是不容易的。
●我很喜歡這個(gè)簡(jiǎn)單
由于工作關(guān)系,臺(tái)灣的著名計(jì)算機(jī)出版公司碁峰公司經(jīng)常會(huì)給我發(fā)一些他們最新的圖書(shū)出版信息,其中我發(fā)現(xiàn)了一本講解Python的書(shū)。我大概看了一下簡(jiǎn)介,發(fā)現(xiàn)這本書(shū)帶有視頻講解,另外從目錄中我還發(fā)現(xiàn)里面包含了很多我非常感興趣的內(nèi)容,如爬蟲(chóng)、網(wǎng)絡(luò)實(shí)時(shí)數(shù)據(jù)抓取、數(shù)據(jù)分析與展示、人臉識(shí)別、驗(yàn)證碼破解、Word文件操作、繪圖、游戲開(kāi)發(fā)等。
內(nèi)容看起來(lái)很不錯(cuò),所以利用工作之便,讓對(duì)方給我寄了一本樣書(shū),當(dāng)然是免費(fèi)的。我并沒(méi)有信心以我的基礎(chǔ)能讀懂這樣一本書(shū),也做好了該書(shū)只是用花哨的主題來(lái)嘩眾取寵的思想準(zhǔn)備。
習(xí)慣性地,我先打開(kāi)隨書(shū)光盤(pán)的第一段視頻,這段視頻講的是集成開(kāi)發(fā)環(huán)境的安裝。根據(jù)我的經(jīng)驗(yàn),如果只講安裝而不講配置,可能就說(shuō)明作者并無(wú)太多實(shí)戰(zhàn)經(jīng)驗(yàn)。但看完以后,我發(fā)現(xiàn)整個(gè)Python開(kāi)發(fā)環(huán)境的安裝的確是根本不需要進(jìn)行任何配置操作的,如系統(tǒng)路徑等。按照書(shū)上講的安裝過(guò)程,不會(huì)出現(xiàn)一點(diǎn)意外。我印象中之前幾次嘗試學(xué)習(xí)Java和.Net時(shí),都是在開(kāi)發(fā)環(huán)境的安裝這一步直接栽了安裝開(kāi)發(fā)環(huán)境的過(guò)程中不是缺這個(gè)就是少那個(gè)……
我很懷疑,這么簡(jiǎn)單的安裝操作后我是否真的就可以編寫(xiě)Python程序了。按照書(shū)中的操作步驟,我開(kāi)始把本書(shū)第一個(gè)簡(jiǎn)單得不能再簡(jiǎn)單的小程序代碼敲了進(jìn)去:
a=1
b=2
sum=a b
print("總和"= str(sum))
它是那么簡(jiǎn)單!沒(méi)看到期待中的變量、語(yǔ)法、程序結(jié)構(gòu)的講解。
它是那么簡(jiǎn)單!沒(méi)有印象中的導(dǎo)入包、頭文件,甚至沒(méi)有變量聲明,沒(méi)有印象中的編譯、連接。
它是那么簡(jiǎn)單!從敲代碼到理解代碼到運(yùn)行出結(jié)果,前后不到1分鐘時(shí)間。
更加令我懷疑人生的是,我僅以若干年前在大學(xué)里學(xué)習(xí)C語(yǔ)言時(shí)遺留的一些模糊知識(shí),竟然對(duì)幾行代碼完全不感覺(jué)困惑……
簡(jiǎn)單,正是我喜歡的風(fēng)格。感覺(jué)我好像可以跟隨這本書(shū)走得遠(yuǎn)一點(diǎn)。
●懷疑地走到最后
一步一步,終于到了我最激動(dòng)的爬蟲(chóng)制作,此時(shí)依然擔(dān)心我是否真的能按書(shū)上所講親手爬下一個(gè)網(wǎng)頁(yè)數(shù)據(jù),哪怕是一整個(gè)網(wǎng)頁(yè)。事實(shí)上,這個(gè)過(guò)程中也確實(shí)遇到了問(wèn)題,案例中所講的網(wǎng)站地址是臺(tái)灣地址,在大陸無(wú)法直接訪(fǎng)問(wèn)。百度了半天,解決的辦法其實(shí)超級(jí)簡(jiǎn)單,把代碼中的網(wǎng)址隨便換成一個(gè)大陸可以訪(fǎng)問(wèn)的網(wǎng)址就可以了……
我竟然做了一個(gè)爬蟲(chóng)出來(lái)!
又經(jīng)過(guò)后面幾個(gè)案例,我逐漸意識(shí)到本書(shū)精妙所在。這的確不是一本嘩眾取寵、為追求市場(chǎng)熱點(diǎn)而編寫(xiě)的書(shū):每個(gè)知識(shí)點(diǎn)都配有一個(gè)小得不能再小但可以獨(dú)立運(yùn)行的案例;知識(shí)點(diǎn)和案例的先后順序經(jīng)過(guò)了嚴(yán)格設(shè)計(jì),形成了完美的由淺入深但絕不越界的內(nèi)容結(jié)構(gòu);每章的綜合案例尤其值得稱(chēng)贊,綜合案例雖然長(zhǎng)一點(diǎn),卻是恰到好處地由前面講到基本點(diǎn)組成。當(dāng)然最重要的是,我的的確確親手將所有實(shí)驗(yàn)都做了出來(lái),而且能夠完全理解。
難以想象,我跟隨全書(shū)竟然完成了爬蟲(chóng)、網(wǎng)頁(yè)實(shí)時(shí)數(shù)據(jù)抓取、數(shù)據(jù)分析與圖表制作、文件解析及操作、人臉識(shí)別、驗(yàn)證碼識(shí)別、繪圖、游戲以及Python文件的打包等所有案例。
期間,我甚至沒(méi)有功夫去抱怨別扭的臺(tái)灣話(huà)。
●以權(quán)謀私
臺(tái)灣的碁峰公司免費(fèi)送我這本書(shū)的目的是讓我評(píng)估這本書(shū)是否可以在大陸出版,但我沉浸在學(xué)習(xí)與收獲的快感之中,以至于都忘了給對(duì)方回復(fù)一個(gè)郵件。直到后來(lái)碁峰公司再次來(lái)信小心翼翼地(我們是甲方)詢(xún)問(wèn)此書(shū)是否可在大陸出版。
我是如此地喜歡這本書(shū),沒(méi)有假惺惺地?cái)[一下譜就與對(duì)方簽訂了本書(shū)的出版合同。
接下來(lái)的工作更加忙碌,為了讓讀者早日能見(jiàn)到這本我最喜愛(ài)的Python書(shū),我同步開(kāi)始了本書(shū)出版準(zhǔn)備工作:把繁體版翻譯成簡(jiǎn)體版;把整書(shū)的全部程序再運(yùn)行一遍,重抓實(shí)驗(yàn)圖片從而把圖片中的繁體字轉(zhuǎn)為簡(jiǎn)體字;把光盤(pán)中所有代碼中的繁體字變成簡(jiǎn)體字;把原書(shū)案例代碼中注釋不夠詳細(xì)的地方逐行加了注釋?zhuān)ㄎ伊?xí)慣于假設(shè)讀者都是我這種水平,注釋也許啰嗦,但萬(wàn)一某個(gè)讀者真與我水平一樣甚至還沒(méi)有我水平高呢?);把一些大陸不能訪(fǎng)問(wèn)的實(shí)驗(yàn)案例改為大家可以順利進(jìn)行實(shí)驗(yàn)的案例……唯一抱歉的是,光盤(pán)中的視頻我沒(méi)法重錄,好在作者的普通話(huà)還可以。
所有這些工作,正常來(lái)說(shuō)在出版社都有專(zhuān)門(mén)的人進(jìn)行處理。我以權(quán)謀私全部親手給包了。一是為了再次享受本書(shū)的精彩以對(duì)所學(xué)知識(shí)加以鞏固,二是想把我在學(xué)習(xí)過(guò)程中覺(jué)得不順暢的地方變得順暢。
由于本人水平畢竟有限,錯(cuò)誤之處請(qǐng)大家批評(píng)指正。書(shū)中遇到任何問(wèn)題可加本人QQ(172559140)進(jìn)行討論。
●本書(shū)適合誰(shuí)
本書(shū)特別適合于多次嘗試學(xué)習(xí)Python、多次購(gòu)買(mǎi)Python圖書(shū)但都半途而廢的讀者。
本書(shū)特別適合于想學(xué)Python但卻擔(dān)心自己基礎(chǔ)太差而學(xué)不會(huì)的讀者。
本書(shū)特別適合于想用Python 做點(diǎn)真玩意出來(lái)的讀者。
但本書(shū)不適合于Python資深碼農(nóng)。
希望本書(shū)能夠真正助您步入Python殿堂。
本書(shū)讀者、譯者、策劃編輯
周春元
推薦序
學(xué)習(xí)資源說(shuō)明
CH01 輕松配置Python開(kāi)發(fā)環(huán)境
/1
1.1 Python編程語(yǔ)言簡(jiǎn)介 /2
1.1.1 Python發(fā)展史 /2
1.1.2 Python 特色 /3
1.2 內(nèi)置的Anaconda開(kāi)發(fā)環(huán)境 /4
1.2.1 安裝Anaconda套件 /4
1.2.2 Anaconda
Prompt套件 /6
1.2.3 在命令窗口運(yùn)行一個(gè)Python程序 /9
1.2.4 用Anaconda Prompt 建立虛擬環(huán)境 /9
1.2.5 IPython 交互式命令窗口 /12
1.3 Spyder編輯器 /14
1.3.1 啟動(dòng) Spyder 編輯器及文件管理 /15
1.3.2 Spyder 智能輸入 /17
1.3.3 程序調(diào)試 /17
1.4 Jupyter
Notebook 編輯器 /19
1.4.1 啟動(dòng) Jupyter Notebook 及建立文件 /19
1.4.2 Jupyter
Notebook智能輸入 /20
1.4.3 用Jupyter Notebook 運(yùn)行程序 /21
1.4.4 在線(xiàn)運(yùn)行Python /22
CH02 基本語(yǔ)法與結(jié)構(gòu)控制 /23
2.1 變量與數(shù)據(jù)類(lèi)型 /24
2.1.1 變量 /24
2.1.2 變量命名規(guī)則 /25
2.1.3 數(shù)值、布爾與字符串?dāng)?shù)據(jù)類(lèi)型 /26
2.1.4 print 及 type 命令 /27
2.1.5 數(shù)據(jù)類(lèi)型的轉(zhuǎn)換 /29
2.2 表達(dá)式 /30
2.2.1 input 命令 /30
2.2.2 算術(shù)運(yùn)算符 /31
2.2.3 關(guān)系運(yùn)算符 /31
2.2.4 邏輯運(yùn)算符 /32
2.2.5 復(fù)合賦值運(yùn)算符 /33
2.3 條件語(yǔ)句 /35
2.3.1 程序流程控制 /35
2.3.2 單向條件(if...) /35
2.3.3 雙向條件語(yǔ)句(if...else) /37
2.3.4 多向條件語(yǔ)句(if...elif...else) /38
2.3.5 條件嵌套 /40
CH03 循環(huán)、數(shù)據(jù)結(jié)構(gòu)及函數(shù) /43
3.1 循環(huán) /44
3.1.1 列表(List)結(jié)構(gòu) /44
3.1.2 range 函數(shù) /45
3.1.3 for 循環(huán) /46
3.1.4 for循環(huán)嵌套 /48
3.1.5 break及continue命令 /49
3.1.6
for...if...else 循環(huán) /50
3.1.7 while循環(huán) /52
3.2 列表、元組結(jié)構(gòu)及字典結(jié)構(gòu) /53
3.2.1 高級(jí)列表操作 /54
3.2.2 元組(Tuple) /56
3.2.3 字典(Dict) /58
3.2.4 高級(jí)字典操作 /59
3.3 函數(shù) /62
3.3.1 自定義函數(shù) /62
3.3.2 不定參函數(shù) /64
3.3.3 變量有效范圍 /65
3.3.4 系統(tǒng)內(nèi)置函數(shù) /66
3.3.5 導(dǎo)入包 /69
CH04 文件處理及SQLite數(shù)據(jù)庫(kù)
/71
4.1 文件和目錄管理 /72
4.1.1 os /72
4.1.2
os.path /73
4.1.3
os.walk /75
4.1.4 shutil包 /76
4.1.5 glob包 /77
4.2 open()打開(kāi)文件 /78
4.2.1 用open()函數(shù)打開(kāi)文件 /78
4.2.2 文件操作 /81
4.2.3 文件操作的應(yīng)用 /85
4.3 SQLite 數(shù)據(jù)庫(kù) /91
4.3.1 管理SQLite數(shù)據(jù)庫(kù) /91
4.3.2 用SQLite Manager創(chuàng)建SQLite數(shù)據(jù)庫(kù)
/93
4.3.3 使用sqlite3包 /94
4.3.4 用cursor進(jìn)行數(shù)據(jù)查詢(xún) /97
4.3.5 SQLite數(shù)據(jù)庫(kù)實(shí)戰(zhàn) /98
CH05 Web數(shù)據(jù)抓取與分析 /105
5.1 網(wǎng)址解析 /106
5.2 網(wǎng)頁(yè)數(shù)據(jù)抓取 /107
5.2.1 用requests抓取網(wǎng)頁(yè)源代碼 /107
5.2.2 搜索指定字符串 /108
5.2.3 用正則表達(dá)式抓取網(wǎng)頁(yè)內(nèi)容 /109
5.3 小試網(wǎng)頁(yè)分析 /114
5.3.1 HTML網(wǎng)頁(yè)結(jié)構(gòu) /114
5.3.2 從網(wǎng)頁(yè)開(kāi)發(fā)界面查看網(wǎng)頁(yè)源代碼 /115
5.3.3 通過(guò)鼠標(biāo)右鍵查看網(wǎng)頁(yè)源代碼 /116
5.3.4 試用BeautifulSoup進(jìn)行網(wǎng)頁(yè)抓取與解析 /117
5.4 牛刀初試編寫(xiě)你自己的網(wǎng)絡(luò)爬蟲(chóng) /121
5.4.1 抓取北京市PM2.5實(shí)時(shí)數(shù)據(jù) /121
5.4.2 爬取指定網(wǎng)站的圖片 /124
CH06 實(shí)現(xiàn)自動(dòng)網(wǎng)頁(yè)測(cè)試 /127
6.1 檢查網(wǎng)站數(shù)據(jù)是否更新 /128
6.1.1 用hashlib判別文件是否有過(guò)更新 /128
6.1.2 用md5檢查網(wǎng)站內(nèi)容是否更新 /128
6.1.3 再試牛刀:抓取網(wǎng)絡(luò)公開(kāi)數(shù)據(jù) /129
6.2 通過(guò)任務(wù)計(jì)劃程序?qū)崿F(xiàn)自動(dòng)下載 /133
6.3 用Selenium組件實(shí)現(xiàn)瀏覽器操作自動(dòng)化 /137
6.3.1 Selenium組件 /138
6.3.2 查找網(wǎng)頁(yè)元素 /140
6.3.3 應(yīng)用:自動(dòng)登錄網(wǎng)站 /142
CH07 繪制圖形 /145
7.1 Matplotlib 組件 /146
7.1.1
Matplotlib 基本繪圖 /146
7.1.2 plot 方法的參數(shù)及圖形設(shè)置 /147
7.1.3 在Matplotlib中顯示中文 /150
7.1.4 繪制柱狀圖及餅圖 /151
7.1.5 實(shí)戰(zhàn):爬取我國(guó)1990年到2016年GDP數(shù)據(jù)并繪圖顯示 /154
7.2 Bokeh組件 /156
7.2.1 Bokeh 基本繪圖 /156
7.2.2 line方法的參數(shù)及圖形屬性設(shè)置 /158
7.2.3 散點(diǎn)圖 /161
7.2.4 實(shí)戰(zhàn):用Bokeh繪制我國(guó)GDP數(shù)據(jù)統(tǒng)計(jì)圖
/163
CH08 實(shí)戰(zhàn):Word文件操作
/167
8.1 用Win32com組件操作Word 文件
/168
8.1.1 實(shí)現(xiàn)新建文件并保存 /168
8.1.2 打開(kāi)文件并顯示文件內(nèi)容 /171
8.1.3 設(shè)置范圍的格式 /172
8.1.4 表格處理 /174
8.1.5 向Word文件中插入圖片 /176
8.1.6 自動(dòng)查找替換Word文件中的指定文字 /177
8.2 實(shí)戰(zhàn):菜單自動(dòng)生成器及批處理替換文字 /179
8.2.1 實(shí)戰(zhàn)一:自動(dòng)生成菜單Word文件 /179
8.2.2 實(shí)戰(zhàn)二:批量替換Word文件中的文字 /183
CH09 實(shí)戰(zhàn):PM2.5實(shí)時(shí)監(jiān)測(cè)顯示器
/185
9.1 Pandas:強(qiáng)大的數(shù)據(jù)處理套件 /186
9.1.1 創(chuàng)建DataFrame 數(shù)據(jù) /186
9.1.2 讀取DataFrame數(shù)據(jù) /188
9.1.3 DataFrame數(shù)據(jù)的修改及排序 /192
9.1.4 刪除DataFrame數(shù)據(jù) /193
9.1.5 導(dǎo)入數(shù)據(jù) /194
9.1.6 繪制圖形 /197
9.2 實(shí)戰(zhàn):PM2.5 實(shí)時(shí)監(jiān)測(cè)顯示器 /198
9.2.1 應(yīng)用程序總覽 /198
9.2.2 PM2.5公開(kāi)數(shù)據(jù) /199
9.2.3 用戶(hù)數(shù)據(jù)接口配置 /200
9.2.4 事件處理及函數(shù) /202
CH10 實(shí)戰(zhàn):人臉識(shí)別及驗(yàn)證碼圖片破解 /205
10.1 OpenCV:人臉識(shí)別應(yīng)用 /206
10.1.1用OpenCV讀取和顯示圖形 /206
10.1.2 保存圖像文件 /209
10.1.3 OpenCV基本繪圖 /210
10.1.4 用OpenCV進(jìn)行人臉識(shí)別 /212
10.1.5 抓取臉部圖形及保存 /215
10.1.6 抓取攝像頭視頻圖像 /217
10.1.7 實(shí)戰(zhàn):通過(guò)人臉識(shí)別進(jìn)行登錄 /219
10.2 用Tesseract識(shí)別驗(yàn)證碼 /223
10.2.1 簡(jiǎn)單的OCR-Tesseract包 /223
10.2.2 驗(yàn)證碼識(shí)別的原理 /225
10.2.3 實(shí)戰(zhàn):驗(yàn)證碼破解 /227
CH11 實(shí)戰(zhàn):Firebase實(shí)時(shí)數(shù)據(jù)庫(kù)應(yīng)用 /231
11.1 Firebase實(shí)時(shí)數(shù)據(jù)庫(kù) /232
11.1.1 Firebase
實(shí)時(shí)數(shù)據(jù)庫(kù)簡(jiǎn)介 /232
11.1.2 創(chuàng)建Firebase實(shí)時(shí)數(shù)據(jù)庫(kù) /232
11.1.3 新增Firebase實(shí)時(shí)數(shù)據(jù)庫(kù)資料 /234
11.1.4 設(shè)置數(shù)據(jù)庫(kù)權(quán)限 /235
11.2 建立Firebase數(shù)據(jù)庫(kù)連接 /236
11.2.1 使用python-firebase包 /236
11.2.2 firebase對(duì)象的方法 /236
11.3 實(shí)戰(zhàn):Firebase版電子詞典 /245
11.3.1 英漢詞典標(biāo)準(zhǔn)版 /246
11.3.2 英漢詞典進(jìn)階版 /253
CH12 實(shí)戰(zhàn):批量更改文件夾、文件名及文件查找 /259
12.1文件管理應(yīng)用 /260
12.1.1 實(shí)戰(zhàn):根據(jù)指定的編號(hào)保存文件 /260
12.1.2 實(shí)戰(zhàn):大批文件復(fù)制搬移及重新命名 /262
12.1.3 實(shí)戰(zhàn):找出重復(fù)的照片 /264
12.1.4 實(shí)戰(zhàn):把圖片文件改為相同大小 /266
12.2 在多個(gè)文件中查找指定的字符 /268
12.2.1 實(shí)戰(zhàn):在多個(gè)文本文件中查找 /268
12.2.2 實(shí)戰(zhàn):在Word文件中查找指定字符 /269
CH13 實(shí)戰(zhàn):音樂(lè)播放器 /273
13.1 關(guān)于音樂(lè)與音樂(lè)的播放 /274
13.1.1 使用pygame包 /274
13.1.2 mixer對(duì)象 /274
13.2 音效播放 /274
13.2.1 Sound對(duì)象 /274
13.2.2 實(shí)戰(zhàn):制作一個(gè)音效播放器 /275
13.3 音樂(lè)播放 /278
13.3.1 music對(duì)象 /278
13.3.2 實(shí)戰(zhàn):制作MP3音樂(lè)播放器 /278
CH14 實(shí)戰(zhàn):Pygame游戲開(kāi)發(fā)
/283
14.1 Pygame入門(mén) /284
14.1.1 Pygame的基本架構(gòu) /284
14.1.2 基本繪圖 /286
14.1.3 加載圖片 /288
14.1.4 插入文本 /290
14.2 Pygame動(dòng)畫(huà)讓圖片動(dòng)起來(lái) /290
14.2.1 動(dòng)畫(huà)處理程序的基本架構(gòu) /291
14.2.2 水平移動(dòng)的藍(lán)色球體 /291
14.2.3 制作一個(gè)可自由移動(dòng)的藍(lán)色球體 /293
14.2.4 角色類(lèi)(Sprite) /294
14.2.5 碰撞偵測(cè) /297
14.2.6 檢測(cè)鍵盤(pán)事件 /299
14.2.7 鼠標(biāo)事件 /301
14.3 實(shí)戰(zhàn):俄羅斯方塊游戲 /303
14.3.1 應(yīng)用程序總覽 /303
14.3.2 球體、方塊、滑板的角色類(lèi) /304
14.3.3 自定義方法及主程序 /307
CH15 把Python打包成可執(zhí)行文件 /311
15.1 打包前的準(zhǔn)備 /312
15.1.1 安裝PyInstaller /312
15.1.2
PyInstaller 使用方法 /312
15.2 制作.exe可執(zhí)行文件 /313
15.2.1 以onedir方式制作.exe可執(zhí)行文件
/313
15.2.2 實(shí)際制作onefile式的.exe文件
/314
15.3 把項(xiàng)目打包為可執(zhí)行文件 /314