Python逐行讀取文件內容


Python逐行讀取文件內容

代碼來源: Python參考手冊

 

復制代碼
復制代碼
f = open("foo.txt")             # 返回一個文件對象
line = f.readline() # 調用文件的 readline()方法
while line:
print line, # 后面跟 ',' 將忽略換行符
# print(line, end = '')   # 在 Python 3中使用
line = f.readline()

f.close()
復制代碼
復制代碼

也可以寫成以下更簡潔的形式

for line in open("foo.txt"):
print line,

更詳細的文件按行讀取操作可以參考:http://www.cnblogs.com/xuxn/archive/2011/07/27/read-a-file-with-python.html

復制代碼
復制代碼
1. 最基本的讀文件方法:
?
# File: readline-example-1.py

file = open("sample.txt")

while 1:
line = file.readline()
if not line:
break
pass # do something
  一行一行得從文件讀數據,顯然比較慢;不過很省內存。
  在我的機器上讀10M的sample.txt文件,每秒大約讀32000行
2. 用fileinput模塊
?
# File: readline-example-2.py

import fileinput

for line in fileinput.input("sample.txt"):
pass
  寫法簡單一些,不過測試以后發現每秒只能讀13000行數據,效率比上一種方法慢了兩倍多……
3. 帶緩存的文件讀取
?
# File: readline-example-3.py

file = open("sample.txt")

while 1:
lines = file.readlines(100000)
if not lines:
break
for line in lines:
pass # do something
  這個方法真的更好嗎?事實證明,用同樣的數據測試,它每秒可以讀96900行數據!效率是第一種方法的3倍,第二種方法的7倍!
————————————————————————————————————————————————————————————
  在Python 2.2以后,我們可以直接對一個file對象使用for循環讀每行數據:
?
# File: readline-example-5.py

file = open("sample.txt")

for line in file:
pass # do something
  而在Python 2.1里,你只能用xreadlines迭代器來實現:
?
# File: readline-example-4.py

file = open("sample.txt")

for line in file.xreadlines():
pass # do something
復制代碼
 
python逐行讀取文本
 

一、使用open打開文件后一定要記得調用文件對象的close()方法。比如可以用try/finally語句來確保最后能關閉文件。

二、需要導入import os

三、下面是逐行讀取文件內容的三種方法:

1、第一種方法:

[python] view plain copy

  

復制代碼
f = open("foo.txt") # 返回一個文件對象 line = f.readline() # 調用文件的 readline()方法 while line: print line, # 后面跟 ',' 將忽略換行符 #print(line, end = '')  # 在 Python 3 中使用 line = f.readline() f.close()
復制代碼

 


2、第二種方法:
  與第3種方法對比, 並非一次性將全部的文件內容載入到內存里,而是在迭代的時候,循環到哪一行才將哪一行讀入內存。這里涉及到一個新的概念-迭代器。
  第二種方法是文本文件讀取的最佳選擇,它簡單,且對任意大小的文件都有效,因為他不會一次性把整個文件都載入到內存里,相反第三種方法存在內存壓力過大的問題。
for line in open("foo.txt"): print line, 

 


3、第三種方法:
  
f = open("c:\\1.txt","r") lines = f.readlines() #讀取全部內容 ,並以列表方式返回 for line in lines print line 

 

四、一次性讀取整個文件內容:

 

  

file_object = open('thefile.txt') try: all_the_text = file_object.read() finally: file_object.close()

 


五、區別對待讀取文本 和 二進制:

1、如果是讀取文本

  
    讀文本文件  
    input = open('data', 'r') #第二個參數默認為r input = open('data') 

 


2、如果是讀取二進制
 
  
input = open('data', 'rb') 

 

 讀固定字節

 

chunk = input.read(100)

 

python3 按行讀取並進行編輯
            
             def test(file):    with open(file, 'r+') as a:        with open(file, 'r+') as b:            for line in a:                b.write('hello ' + line)

1、文件打開格式不一定是“r+”,但是必須指針落點從頭開始,所有不能說“a”,因為“w”會把源文件內容清空,也不行

第一個文件打開格式可以是:r,r+

第二個文件打開格式可以是:r+

2、文件必須open兩次,因為每一次指針落點都要從頭開始

3、r+模式write時會覆蓋原來內容,但是

在文件關閉前或緩沖區刷新前,字符串內容存儲在緩沖區中,這時你在文件中是看不到寫入的內容的。
————————————————

 

需要安裝xlwt庫,可以用如下命令安裝:
pip install xlwt
1
示例文本:
100 -494 td_error 0.6692215
200 318 td_error 0.57682794
300 57 td_error 0.45037615
400 260 td_error 0.42214713
500 586 td_error 0.45073098
600 615 td_error 0.4728373
700 731 td_error 0.48083866
800 802 td_error 0.3751492
900 440 td_error 0.4249844
1000 430 td_error 0.36427215
12345678910
參考代碼:
import xlwt
import codecs

input_txt = 'demo.txt'
output_excel = 'demo.xls'
sheetName = 'Sheet1'
start_row = 0
start_col = 0

wb = xlwt.Workbook(encoding = 'utf-8')
ws = wb.add_sheet(sheetName)

f = open(input_txt, encoding = 'utf-8')

row_excel = start_row
for line in f:
    line = line.strip('\n')
    line = line.split(' ')
   
    print(line)

    col_excel = start_col
    len_line = len(line)
    for j in range(len_line):
        print (line[j])
        ws.write(row_excel,col_excel,line[j])
        col_excel += 1
        wb.save(output_excel)

    row_excel += 1

f.close
1234567891011121314151617181920212223242526272829303132
代碼執行完后,會生成一個excel文件
————————————————


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM