原創 python修改檔案某行的內容

2021-07-29 02:57:53 字數 2388 閱讀 5984

1 # -*- coding:utf-8 -*-

2 34 # @version: 1.0

5 # @author: zhipeng zhang

6 # @date: '2015/5/28'

7 import os

8 9 import fileinput

1011

12 def rewrite_line(filename, lineno, text, left=true, right=false):

13 f = fileinput.input(filename, inplace=1)

14 for line in f:

15 line_text = line.replace("\r\n", "").replace("\n", "")

16 if f.lineno() == lineno:

17 if left:

18 print text + line_text

19 elif right:

20 print line_text + text

21 else:

22 print text

23 else:

24 print line_text

25 f.close()

2627 def cat(filename):

28 with file(filename) as f:

29 print f.read()

30 os.remove(filename)

31 with file(filename, "w")as f:

32 f.write("a\nb\nc")

3334 def test():

35 filename = "rewrite.test"

36 with file(filename, "w")as f:

37 f.write("a\nb\nc")

3839 print "new file:" + filename

40 print "file content: a\nb\nc"

4142 print "--------start test---------"

4344 print filename, "line:", 2, "left add # --> #b?"

45 rewrite_line(filename, 2, "#", left=true)

46 cat(filename)

4748

49 print filename, "line:", 2, "right add #end --> b#end?"

50 rewrite_line(filename, 2, "#end", left=false, right=true)

51 cat(filename)

5253 print filename, "line:", 1, " rewrite a --> zhipeng?"

54 rewrite_line(filename, 1, "zhipeng", left=false, right=false)

55 cat(filename)

5657 os.remove(filename)

5859

60 if __name__ == "__main__":

61 test()

參考:《how-to-write-char-on-line-into-file》《 fileinput模組》

輸出如下:

new file:rewrite.test

file content: abc

--------start test---------

rewrite.test line: 2 left add # --> #b?a#b

crewrite.test line: 2 right add #end --> b#end?

ab#end

crewrite.test line: 1 rewrite a --> zhipeng?

zhipengbc

根據輸出可以看到,函式rewrite_line中的print的每行值並沒有列印出來,而是列印到stdout中,其實就是直接定向到檔案了,這樣做,可能有點雞肋吧。。。但起碼也是乙個輪子

讀取和修改大檔案的某行內容

最近碰到乙個比較有趣的問題,就是修改某個檔案的某一行字元,不過檔案太大,file 直接讀取是不可能的,我使用fgets來跳轉到指定行,並用fwrite修改某個字串 fp fopen d file.txt r if fp fgets fp i fclose fp 這裡需要注意的是fgets獲取到一行後...

Python 讀取csv的某行

站長用python寫了乙個可以提取csv任一列的 歡迎使用。github鏈結 就可以儲存為csv檔案,檔案內容是 假設上述csv檔案儲存為 a.csv 如何用python像操作excel一樣提取其中的一行,也就是一條記錄,利用python自帶的 csv模組,有兩種方法可以實現 第一種方法使用read...

Python 讀取csv的某行

站長用python寫了乙個可以提取csv任一列的 歡迎使用。github鏈結 如果我們想用dictreader讀取csv的某一列,就可以用列的標題查詢 import csv with open a.csv rb as csvfile reader csv.dictreader csvfile for...