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...