Python IO編程

文件讀寫

  • 讀文件
    由于文件讀寫時(shí)都有可能產(chǎn)生IOError,一旦出錯(cuò),后面的f.close()就不會調(diào)用目木。所以溃列,為了保證無論是否出錯(cuò)都能正確地關(guān)閉文件劲厌,我們可以使用try ... finally來實(shí)現(xiàn):
try:
    f = open('/path/to/file', 'r')   #二進(jìn)制文件用'rb',特定字符編碼encoding='gbk',忽略錯(cuò)誤errors='ignore'
    print(f.read())
finally:
    if f:
        f.close()

可以用以下方法簡寫

with open('/path/to/file', 'r') as f:
    print(f.read())

調(diào)用read()會一次性讀取文件的全部內(nèi)容听隐,如果文件有10G补鼻,內(nèi)存就爆了,所以雅任,要保險(xiǎn)起見风范,可以反復(fù)調(diào)用read(size)方法,每次最多讀取size個(gè)字節(jié)的內(nèi)容沪么。另外乌企,調(diào)用readline()可以每次讀取一行內(nèi)容,調(diào)用readlines()一次讀取所有內(nèi)容并按行返回list成玫。因此加酵,要根據(jù)需要決定怎么調(diào)用拳喻。

  • 寫文件
>>> f = open('/Users/michael/test.txt', 'w')
>>> f.write('Hello, world!')
>>> f.close()

簡寫

with open('/Users/michael/test.txt', 'w') as f:
    f.write('Hello, world!')

操作文件或目錄

# 查看當(dāng)前目錄的絕對路徑:
>>> os.path.abspath('.')
'/Users/michael'
# 在某個(gè)目錄下創(chuàng)建一個(gè)新目錄,首先把新目錄的完整路徑表示出來: 猪腕,這是因?yàn)閣indows和linux路徑結(jié)構(gòu)不一樣
>>> os.path.join('/Users/michael', 'testdir')
'/Users/michael/testdir'
# 然后創(chuàng)建一個(gè)目錄:
>>> os.mkdir('/Users/michael/testdir')
# 刪掉一個(gè)目錄:
>>> os.rmdir('/Users/michael/testdir')
# 拆分路徑
>>> os.path.split('/Users/michael/testdir/file.txt')
('/Users/michael/testdir', 'file.txt')
# 獲得文件擴(kuò)展名
>>> os.path.splitext('/path/to/file.txt')
('/path/to/file', '.txt')
# 對文件重命名:
>>> os.rename('test.txt', 'test.py')
# 刪掉文件:
>>> os.remove('test.py')
#復(fù)制在shutil模塊的copyfile()函數(shù)
# 過濾文件
>>> [x for x in os.listdir('.') if os.path.isdir(x)]
['.lein', '.local', '.m2', '.npm', '.ssh', '.Trash', '.vim', 'Applications', 'Desktop', ...]

序列化

  • Json
import json

class Student(object):
    def __init__(self, name, age, score):
        self.name = name
        self.age = age
        self.score = score

s = Student('Bob', 20, 88)

#序列
print(json.dumps(s, default=lambda obj: obj.__dict__))
  • 反序列
    如果我們要把JSON反序列化為一個(gè)Student對象實(shí)例冗澈,loads()方法首先轉(zhuǎn)換出一個(gè)dict對象,然后,我們傳入的object_hook函數(shù)負(fù)責(zé)把dict轉(zhuǎn)換為Student實(shí)例:
def dict2student(d):
    return Student(d['name'], d['age'], d['score'])


>>> json_str = '{"age": 20, "score": 88, "name": "Bob"}'
>>> print(json.loads(json_str, object_hook=dict2student))
<__main__.Student object at 0x10cd3c190>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末该镣,一起剝皮案震驚了整個(gè)濱河市氏堤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捌归,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岭粤,死亡現(xiàn)場離奇詭異惜索,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)剃浇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門巾兆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人虎囚,你說我怎么就攤上這事角塑。” “怎么了淘讥?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵圃伶,是天一觀的道長。 經(jīng)常有香客問我蒲列,道長窒朋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任嫉嘀,我火速辦了婚禮炼邀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘剪侮。我一直安慰自己拭宁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布瓣俯。 她就那樣靜靜地躺著杰标,像睡著了一般。 火紅的嫁衣襯著肌膚如雪彩匕。 梳的紋絲不亂的頭發(fā)上腔剂,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機(jī)與錄音驼仪,去河邊找鬼掸犬。 笑死袜漩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的湾碎。 我是一名探鬼主播宙攻,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼介褥!你這毒婦竟也來了座掘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤柔滔,失蹤者是張志新(化名)和其女友劉穎溢陪,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體睛廊,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡形真,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了喉前。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片没酣。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡王财,死狀恐怖卵迂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情绒净,我是刑警寧澤见咒,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站挂疆,受9級特大地震影響改览,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缤言,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一宝当、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧胆萧,春花似錦庆揩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蚌吸,卻和暖如春锈拨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背羹唠。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工奕枢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留娄昆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓缝彬,卻偏偏與公主長得像稿黄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子跌造,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

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

  • IO編程概念 IO在計(jì)算機(jī)中指Input/Output杆怕,也就是輸入和輸出。由于程序和運(yùn)行時(shí)數(shù)據(jù)是在內(nèi)存中駐留壳贪,由C...
    時(shí)間之友閱讀 720評論 0 0
  • IO在計(jì)算機(jī)中指Input/Output陵珍,也就是輸入和輸出。由于程序和運(yùn)行時(shí)數(shù)據(jù)是在內(nèi)存中駐留违施,由CPU這個(gè)超快的...
    蝴蝶蘭玫瑰閱讀 350評論 0 1
  • IO在計(jì)算機(jī)中是指input/output互纯,也就是輸入和輸出。由于程序和運(yùn)行時(shí)數(shù)據(jù)是在內(nèi)存中駐留磕蒲,由CPU這個(gè)超快...
    Sun_atom閱讀 1,692評論 0 0
  • 希望你不再執(zhí)著地等待留潦, 希望你能做喜歡的事, 希望你身邊有個(gè)她辣往, 希望你早就忘記我兔院。
    尚小童話閱讀 136評論 0 1
  • 生于春的枝椏 一兩瓣葉 遇素手牽引 在焙鍋里升華 經(jīng)烈火的考驗(yàn)卷曲成茗 遇清泉的滋潤再展芳華 絲絲清香,斟滿一杯閑...
    山上人家123閱讀 230評論 13 19