python進階學習筆記(一)

來源:互聯網
上載者:User

同樣是《python基礎教程(第二版)》的內容,只是後面內容學起來,相比前面會比較有趣,也更加實用,所以,將“基礎”改為“進階”。

python 電子書分享地址:http://yunpan.cn/Q2U87uGrNiTA3

 

本節講檔案的操作

-------------------------------

 

開啟檔案

 

open函數用來開啟檔案,文法如下:

open(name[, mode[,buffering]])

open函數使用一個檔案名稱作為唯一的強制參數,然後返回一個檔案對象。假設我要開啟我硬碟(I:/python/test.txt) 檔案,可以用下面方法:

>>> f = open(r'i:\python\test.txt')

 

open函數中模式參數的常用值

 

 

基本檔案方法

 

開啟檔案是第一步,下面就需要對檔案進行讀或寫,可以write 和 read方法進行讀或寫。

#寫入檔案內容>>> f = open('test.txt','w')>>> f.write('hello,')>>> f.write('world!')>>> f.close()# 讀取檔案內容>>> f = open('test.txt','r')>>> f.read(4)   #讀取前4個字元'hell'>>> f.read()   #讀取剩餘的所有字元'o,world!'

 

關閉檔案

  應該牢記使用close方法關閉檔案。儘管一個檔案對象在退出程式後會自動關閉,但關閉檔案是沒什麼害處的,可以避免在某些作業系統或設定中進行無用的修改,這樣做也會避免用完系統中開啟檔案的配額。

 

 

使用基本檔案方法

 

假如test.txt檔案包含如下內容:

-----------------------------

Welcome to this file

There is nothing here except

This stupid haiku

-----------------------------

下面是基本讀檔案的方法:

# read(n) 指定參數>>> f = open(r'I:\python\test.txt')>>> f.read(7)'Welcome'>>> f.read(4)' to '>>> f.close()# read() 不指定參數>>> f = open(r'I:\python\test.txt')>>> print f.read()Welcome to this fileThere is nothing here exceptThis stupid haiku>>> f.close()# readline() >>> f = open(r'I:\python\test.txt')>>> for i in range(3):    print str(i) + ':' + f.readline()    0:Welcome to this file1:There is nothing here except2:This stupid haiku>>> f.close()#readlines()>>> import pprint>>> pprint.pprint(open(r'I:\python\test.txt').readlines())['Welcome to this file\n', 'There is nothing here except\n', 'This stupid haiku']

readline返回一行的字串, readlines返回包含檔案所有內容的字串列表, 每個元素是一行的字串。

pprint 模組的pprint方法將內容分成每個小項單行顯示。

 

下面是寫檔案的基本方法:

>>> f = open(r'I:\python\test.txt','w')  #預設是讀檔案,可以不加‘r’,寫檔案一定要加’w’>>> f.write('this\nis no \nhaiku')>>> f.close()

 

>>> f = open(r'I:\python\test.txt')>>> lines = f.readlines()>>> lines[1] = "isn't a\n">>> f = open(r'I:\python\test.txt','w')>>> f.writelines(lines)>>> f.close()

 

 

對檔案內容進行迭代

 

1、接位元組處理

最常見的對檔案內容進行迭代的方法是while迴圈中使用read方法。例如,對每個字元進行迴圈,可以用下面方法實現:

f = open(filename)char = f.read(1)while char:    process(char)    char = f.read(1)f.close()

read方法返回的字串會包含一個字元,直到檔案末尾,read返回一個空的字串,char將變為假。

可以看到,char = f.read(1) 被重複地使用,代碼重複通過被認為是一件壞事,看看下面的方法:

f = open(filename)while True:    char = f.read(1)    if not char: break    process(char)f.close()

這裡break語句被頻繁的使用(這樣會讓代碼比較難懂),儘管如此,但它仍然要比前面的方法好。

 

2、讀取所有內容

如果檔案不是很大,那麼可以使用不帶參數的read方法一次讀取整個檔案,或者使用readlines方法。

#用read迭代每個字元f = open(filename)for char in f.read():    process(char)f.close()
#用readlines迭代行:f = open(filename)for line in f.readlines(): process(line)f.close()

 

3、用fileinput 來進行迭代

fileinput模組包含了開啟檔案的函數,,只需要傳一個檔案名稱給它

import fileinputfor line in fileinput.input(filename):    process(line)

 

4、檔案迭代器

好吧!這是python2.2之後才有的方法,如果它一開始就有,上面的方法也許就不存在了。檔案對象是可以迭代的,這就意味著可以直接在for迴圈中對他們進行迭代

f = open(filename)for line in f:    process(line)f.close()

 

 

再來看下面例子:

>>> f = open(r'I:\python\test.txt','w')>>> f.write('First line\n')>>> f.write('Second line\n')>>> f.write('Third line\n')>>> f.close()>>> lines = list(open(r'I:\python\test.txt'))>>> lines['First line\n', 'Second line\n', 'Third line\n']>>> first,second,third = open(r'I:\python\test.txt')>>> first'First line\n'>>> second'Second line\n'>>> third'Third line\n'

在這個例子中:

 

  •  使用序列來對一個開啟的檔案進行解包操作,把每行都放入一個單獨的變理中,這麼做是很有實用性的,因為一般不知道檔案中有多少行,但它示範的檔案的“迭代性”。
  •  在寫檔案後一定要關閉檔案,這樣才能確保資料被更新到硬碟。

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.