1. 程式人生 > >Python中read()、readline()和readlines()三者間的區別和用法

Python中read()、readline()和readlines()三者間的區別和用法

前言

眾所周知在python中讀取檔案常用的三種方法:read(),readline(),readlines(),今天看專案是又忘記他們的區別了。以前看書的時候覺得這東西很簡單,一眼掃過,待到用時卻也只知道有這麼幾個方法,不懂得它的原理與用法。也許吧,沒有永遠的記憶,況且根本沒有用心去記它。話不多說,來一起看看詳細的介紹:

準備

假設a.txt的內容如下所示:

1

2

3

Hello

Welcome

What is the fuck...

一、read([size])方法

read([size])方法從檔案當前位置起讀取size個位元組,若無引數size,則表示讀取至檔案結束為止,它範圍為字串物件

1

2

3

4

5

f = open("a.txt")

lines = f.read()

print lines

print(type(lines))

f.close()

輸出結果:

1

2

3

4

Hello

Welcome

What is the fuck...

<type 'str'> #字串型別

二、readline()方法

從字面意思可以看出,該方法每次讀出一行內容,所以,讀取時佔用記憶體小,比較適合大檔案,該方法返回一個字串物件

1

2

3

4

5

6

7

f = open("a.txt")

line = f.readline()

print(type(line))

while line:

print line,

line = f.readline()

f.close()

輸出結果:

1

2

3

4

<type 'str'>

Hello

Welcome

What is the fuck...

三、readlines()方法讀取整個檔案所有行,儲存在一個列表(list)變數中,每行作為一個元素,但讀取大檔案會比較佔記憶體。

1

2

3

4

5

6

f = open("a.txt")

lines = f.readlines()

print(type(lines))

for line in lines:

print line,

f.close()

輸出結果:

1

2

3

4

<type 'list'>

Hello

Welcome

What is the fuck...

四、linecache模組

當然,有特殊需求還可以用linecache模組,比如你要輸出某個檔案的第n行:

1

2

3

# 輸出第2行

text = linecache.getline(‘a.txt',2)

print text,

對於大檔案效率還可以。

下面是其他網友的補充

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

"""

1、讀取檔案的三個方法:read()、readline()、readlines()

2、三個方法均可接受一個變數用以限制每次讀取的資料量,通常不使用該變數。

"""

"""

關於read()方法:

1、讀取整個檔案,將檔案內容放到一個字串變數中

2、如果檔案大於可用記憶體,不可能使用這種處理

"""

file_object = open("test.py",'r') #建立一個檔案物件,也是一個可迭代物件

try:

all_the_text = file_object.read() #結果為str型別

print type(all_the_text)

print "all_the_text=",all_the_text

finally:

file_object.close()

"""

關於readline()方法:

1、readline()每次讀取一行,比readlines()慢得多

2、readline()返回的是一個字串物件,儲存當前行的內容

"""

file_object1 = open("test.py",'r')

try:

while True:

line = file_object1.readline()

if line:

print "line=",line

else:

break

finally:

file_object1.close()

"""

關於readlines()方法:

1、一次性讀取整個檔案。

2、自動將檔案內容分析成一個行的列表。

"""

file_object2 = open("test.py",'r')

try:

lines = file_object2.readlines()

print "type(lines)=",type(lines) #type(lines)= <type 'list'>

for line in lines:

print "line=",line

finally:

file_object2.close()

總結