Python學(xué)習(xí)第七章

文件的使用

python能夠以文本和二進(jìn)制兩種方式處理文件
二進(jìn)制文件直接由比特0和比特1組成胡桨,沒有統(tǒng)一字符編碼材诽,文件內(nèi)部數(shù)據(jù)的組織格式與文件用途有關(guān)事格。二進(jìn)制文件和文本文件最主要的區(qū)別在于是否有統(tǒng)一的字符編碼

  • 理解文本文件和二進(jìn)制文件的區(qū)別
    用文本編輯器生成一個包含“中國是個偉大的國家介粘!”的txt格式文本文件,然后分別用文本文件格式和二進(jìn)制文件格式讀入众雷,并打印輸出效果。
textFile=open('7.1.txt','rt',encoding='utf-8')
print(textFile.readline())
textFile.close()
binFile=open('7.1.txt','rb')
print(binFile.readline())
binFile.close()
  • 文件的打開模式(共7個)


open()函數(shù)默認(rèn)采用'rt'(文件只讀)模式
讀取一個二進(jìn)制文件做祝,如一張圖片砾省,一段視頻或一段音樂,需要使用文件
當(dāng)文件被打開后混槐,根據(jù)文件打開方式不同可以對文件進(jìn)行相應(yīng)的讀寫操作编兄。

  • 文件內(nèi)容讀寫方式(共4個)


文本文件逐行打印

用戶輸入文件路徑,以文本文件方式讀入文件內(nèi)容并逐行打印

fname=input("請輸入要打開的文件:")
fo=open(fname,"r",encoding='utf-8')
for line in fo.readlines():
    print(line)
fo.close()
  • 文件內(nèi)容寫入方法(共3個)


向文件寫入一個列表

向文件寫一個列表類型纵隔,并打印輸出結(jié)果

fname=input("請輸入要寫入的文件:")
fo=open(fname,"w+",encoding='utf-8')
ls=["唐詩","宋詞","元曲"]
fo.writelines(ls)
for line in fo:
    print(line)
fo.close()

程序沒有輸出寫入的內(nèi)容翻诉,這是因為文件寫入內(nèi)容后炮姨,當(dāng)前文件操作指針在寫入內(nèi)容的后面,第五行到第七行代碼從指針開始想后讀入并打印內(nèi)容碰煌,被寫入的內(nèi)容卻在指針的前面舒岸,因此未能被打印出來。
解決方法:可以在寫入文件后增加一條代碼fo.seek(0)將文件操作指針返回到文件開始芦圾,即可顯示寫入的內(nèi)容蛾派。

fname=input("請輸入要寫入的文件:")
fo=open(fname,"w+",encoding='utf-8')
ls=["唐詩","宋詞","元曲"]
fo.writelines(ls)
fo.seek(0)
for line in fo:
    print(line)
fo.close()

PIL庫的使用

PIL庫是一個具有強(qiáng)大圖像處理能力的第三方庫,不僅包含了豐富的像素个少,色彩操作功能洪乍,還可以用于圖像歸檔和批量處理。
PIL庫支持圖像存儲夜焦、顯示和處理壳澳,他能夠處理幾乎所有的圖片格式,可以完成對圖像的縮放茫经、剪裁巷波、疊加以及向圖像添加線條圖像和文字等操作。
PIL庫主要實現(xiàn)圖像歸檔和圖像處理兩方面功能需求卸伞。

  • 圖像歸檔
    對圖像進(jìn)行批處理抹镊、生成圖像預(yù)覽、圖像格式轉(zhuǎn)換等
  • 圖像處理
    圖像基本處理荤傲、像素處理垮耳、顏色
    處理等。
PIL庫的image類解析

image是PIL最重要的類遂黍,它代表一張圖片终佛,引入這個類的方法是
from PIL import Image

  • Image類的圖像讀取和創(chuàng)建方法(共5個)



    通過image打開圖像文件時,圖像的柵格數(shù)據(jù)不會被直接解碼或者加載妓湘,程序只是讀取了圖像文件頭部的元數(shù)據(jù)信息查蓉,這部分信息標(biāo)識了圖像格式、顏色榜贴、大小等豌研。


  • Image類的常用屬性(共4個)




    Image還能讀取序列類圖像文件,包括gif,fli,flc,tiff等格式文件唬党。open()方法打開一個圖像時自動加載到序列的第一幀鹃共,使用seek()和tell()方法可以在不同幀之間移動。

  • Image類的序列圖像操作方法(共2個)
    Image.seek(frame)跳轉(zhuǎn)并返回圖像中的指定幀
    Image.tell() 返回當(dāng)前幀的序號
GIF文件圖像的提取

對一個gif格式的動態(tài)文件驶拱,提取其中各幀圖像霜浴,并保存為文件。

from PIL import Image
im=Image.open("F:\python\第七章\pica.gif")  #讀入一個gif文件
try:
    im.save('picframe{:02d}.png'.format(im.tell()))
    while True:
        im.seek(im.tell()+1)
        im.save('picframe{:02d}.png'.format(im.tell()))
except:
    print("處理結(jié)束")
  • image類的圖像轉(zhuǎn)換和保存方法(共3個)



    PIL庫還提供了格式轉(zhuǎn)換功能




    生成縮略圖
  • Image類可以縮放和旋轉(zhuǎn)圖像



    retate()方法是以逆時針旋轉(zhuǎn)的角度值作為參數(shù)來旋轉(zhuǎn)圖像蓝纲。

  • image類的圖像像素和通道處理方法(共4個)


圖像的顏色交換

交換圖像中的顏色阴孟∩稳遥可以通過分離RGB圖片中的3個顏色通道實現(xiàn)顏色交換。

from PIL import Image
im=Image.open('birdnest.jpg')
r,g,b=im.split()
om=Image.merge("RGB",(b,g,r))
om.save("birdnestGGR.jpg")

原圖



交換后



操作圖像的每個像素點需要通過函數(shù)實現(xiàn)永丝,可以采用lamba函數(shù)和point()方法锹漱。


PIL庫的ImageFilter類和ImageEnhance類提供了過濾圖像和增強(qiáng)圖像的方法。

  • ImageFilter類的預(yù)定義過濾方法(共10個)

    利用Image類的filter方法可以使用ImageFilter類
    Image.filter(ImageFilter.function)
圖像的輪廓獲取
from PIL import Image
from PIL import ImageFilter
im=Image.open('F:\\python\\第七章\\birdnest.jpg')
om=im.filter(ImageFilter.CONTOUR) #圖像的輪廓效果
om.save("F:\\python\\第七章\\newbird.jpg")

ImageEnhance類提供了更高級的圖像增強(qiáng)功能慕嚷,如調(diào)節(jié)色彩哥牍、亮度、對比度喝检、銳化等

  • ImageEnhance類的圖像增強(qiáng)和濾鏡方法(共5個)


圖像的對比度增強(qiáng)

增強(qiáng)圖像的對比度為初始的20倍嗅辣。

from PIL import Image
from PIL import ImageEnhance
im=Image.open('F:\\python\\第七章\\birdnest.jpg')
om=ImageEnhance.Contrast(im) #調(diào)整圖像的對比度
om.enhance(20).save('F:\\python\\第七章\\bird1.jpg')

一二維數(shù)據(jù)的格式化和處理

一二維數(shù)據(jù)的表示和書寫,CSV文件的每一行是數(shù)據(jù)挠说,可以使用python中的列表類型表示澡谭,整個CSV文件是一個二維數(shù)據(jù),由表示每一行的列表類型作為元素纺涤,組成一個二維列表译暂。

導(dǎo)入CSV格式數(shù)據(jù)到列表
fo=open("F:\\python\\第七章\\7.12.csv")
ls=[]
for line in fo:
    line=line.replace("\n","")
    ls=line.split(",")
    lns=""
    for s in ls:
        lns+="{}\t".format(s)
    print(lns)

fo.close()

CSV格式的HTML展示

這是一個將CSV格式轉(zhuǎn)換為HTML展示的實例
將CSV文件轉(zhuǎn)化為HTML文件需要三個步驟:
1、 讀入CSV文件撩炊,獲得文件數(shù)據(jù)
2、對數(shù)據(jù)進(jìn)行格式化處理和轉(zhuǎn)換
3崎脉、輸出HTML格式的文件

seg1='''
<!DOCTYPE HTML>\n<html>\n<body>\n<meta charset=gb2312>
<h2 align=center>2016年7月部分大中城市新建住宅價格指數(shù)</h2>
<table border='1' align='center' width='700%'>
<tr bgcolor='orange'>\n
'''
seg2 = "</tr>\n"
seg3 = "</table>\n</body>\n</html>"
def fill_data(locls):
    seg = '<tr><td align="center">{}</td><td align="center">\
{}</td><td align="center">{}</td><tdalign="center">\
{}</td></tr>\n'.format(*locls)
    return seg
fr=open("F:\\python\\第七章\\7.12.csv","r")
ls=[]
for line in fr:
    line=line.replace("\n","")
    ls.append(line.split(","))
fr.close()
fw = open("F:\\python\\第七章\\price2016.html", "w")
fw.write(seg1)
fw.write('<th width="25%">{}</th>\n<th width="25%">{}</th>\n<th width="25%">{}</th>\n<th width="25%">{}</th>\n'.format(*ls[0]))
fw.write(seg2)
for i in range(len(ls)-1):
    fw.write(fill_data(ls[i+1]))
fw.write(seg3)
fw.close()

JSON庫的使用

json庫是處理JSON格式的python標(biāo)準(zhǔn)庫
import json

  • json庫的操作類函數(shù)(共四個)


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拧咳,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子囚灼,更是在濱河造成了極大的恐慌骆膝,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灶体,死亡現(xiàn)場離奇詭異阅签,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蝎抽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門政钟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人樟结,你說我怎么就攤上這事养交。” “怎么了瓢宦?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵碎连,是天一觀的道長。 經(jīng)常有香客問我驮履,道長鱼辙,這世上最難降的妖魔是什么廉嚼? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮倒戏,結(jié)果婚禮上前鹅,老公的妹妹穿的比我還像新娘。我一直安慰自己峭梳,他們只是感情好舰绘,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著葱椭,像睡著了一般捂寿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上孵运,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天秦陋,我揣著相機(jī)與錄音,去河邊找鬼治笨。 笑死驳概,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的旷赖。 我是一名探鬼主播顺又,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼等孵!你這毒婦竟也來了稚照?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤俯萌,失蹤者是張志新(化名)和其女友劉穎果录,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咐熙,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡弱恒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了棋恼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片返弹。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蘸泻,靈堂內(nèi)的尸體忽然破棺而出琉苇,到底是詐尸還是另有隱情,我是刑警寧澤悦施,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布并扇,位于F島的核電站,受9級特大地震影響抡诞,放射性物質(zhì)發(fā)生泄漏穷蛹。R本人自食惡果不足惜土陪,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肴熏。 院中可真熱鬧鬼雀,春花似錦、人聲如沸蛙吏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸦做。三九已至励烦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泼诱,已是汗流浹背坛掠。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留治筒,地道東北人屉栓。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像耸袜,于是被迫代替她去往敵國和親友多。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

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