如何将char写入文件中

时间:2015-05-28 05:26:07

标签: python file line

我有一个大文本文件,

zhang
zhipeng
peng

我希望在 N 行之前让它在文本文件中写入str “ - ”

zhang
--zhipeng
peng

我不希望将所有文件读取到内存中,因为文件太大了。 有点类似标记文件的某些行。

答案

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>/opt/work/users/zhanghzipeng/baidu_baike/baike/utils/text_helper.py.html</title>
<meta name="Generator" content="Vim/7.2">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body bgcolor="#000000" text="#ffffff"><font face="monospace">
<font color="#ffff00">&nbsp;1 </font><font color="#00ffff"># -*- coding:utf-8 -*-</font><br>
<font color="#ffff00">&nbsp;2 </font><br>
<font color="#ffff00">&nbsp;3 </font><br>
<font color="#ffff00">&nbsp;4 </font><font color="#00ffff"># @version: 1.0</font><br>
<font color="#ffff00">&nbsp;5 </font><font color="#00ffff"># @author: Zhipeng Zhang</font><br>
<font color="#ffff00">&nbsp;6 </font><font color="#00ffff"># @date: '2015/5/28'</font><br>
<font color="#ffff00">&nbsp;7 </font><font color="#ff40ff">import</font>&nbsp;os<br>
<font color="#ffff00">&nbsp;8 </font><br>
<font color="#ffff00">&nbsp;9 </font><font color="#ff40ff">import</font>&nbsp;fileinput<br>
<font color="#ffff00">10 </font><br>
<font color="#ffff00">11 </font><br>
<font color="#ffff00">12 </font><font color="#ffff00">def</font>&nbsp;<font color="#00ffff">rewrite_line</font>(filename, lineno, text, left=True, right=False):<br>
<font color="#ffff00">13 </font>&nbsp;&nbsp;&nbsp;&nbsp;f = fileinput.input(filename, inplace=1)<br>
<font color="#ffff00">14 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">for</font>&nbsp;line <font color="#ffff00">in</font>&nbsp;f:<br>
<font color="#ffff00">15 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line_text = line.replace(&quot;<font color="#ff40ff">\r\n</font>&quot;, &quot;&quot;).replace(&quot;<font color="#ff40ff">\n</font>&quot;, &quot;&quot;)<br>
<font color="#ffff00">16 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">if</font>&nbsp;f.lineno() == lineno:<br>
<font color="#ffff00">17 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">if</font>&nbsp;left:<br>
<font color="#ffff00">18 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">print</font>&nbsp;text + line_text<br>
<font color="#ffff00">19 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">elif</font>&nbsp;right:<br>
<font color="#ffff00">20 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">print</font>&nbsp;line_text + text<br>
<font color="#ffff00">21 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">else</font>:<br>
<font color="#ffff00">22 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">print</font>&nbsp;text<br>
<font color="#ffff00">23 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">else</font>:<br>
<font color="#ffff00">24 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">print</font>&nbsp;line_text<br>
<font color="#ffff00">25 </font>&nbsp;&nbsp;&nbsp;&nbsp;f.close()<br>
<font color="#ffff00">26 </font><br>
<font color="#ffff00">27 </font><font color="#ffff00">def</font>&nbsp;<font color="#00ffff">cat</font>(filename):<br>
<font color="#ffff00">28 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">with</font>&nbsp;file(filename) <font color="#ff40ff">as</font>&nbsp;f:<br>
<font color="#ffff00">29 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">print</font>&nbsp;f.read()<br>
<font color="#ffff00">30 </font>&nbsp;&nbsp;&nbsp;&nbsp;os.remove(filename)<br>
<font color="#ffff00">31 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">with</font>&nbsp;file(filename, &quot;<font color="#ffff00">w</font>&quot;)<font color="#ff40ff">as</font>&nbsp;f:<br>
<font color="#ffff00">32 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.write(&quot;<font color="#ffff00">a</font><font color="#ff40ff">\n</font><font color="#ffff00">b</font><font color="#ff40ff">\n</font><font color="#ffff00">c</font>&quot;)<br>
<font color="#ffff00">33 </font><br>
<font color="#ffff00">34 </font><font color="#ffff00">def</font>&nbsp;<font color="#00ffff">test</font>():<br>
<font color="#ffff00">35 </font>&nbsp;&nbsp;&nbsp;&nbsp;filename = &quot;<font color="#ffff00">rewrite.test</font>&quot;<br>
<font color="#ffff00">36 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">with</font>&nbsp;file(filename, &quot;<font color="#ffff00">w</font>&quot;)<font color="#ff40ff">as</font>&nbsp;f:<br>
<font color="#ffff00">37 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.write(&quot;<font color="#ffff00">a</font><font color="#ff40ff">\n</font><font color="#ffff00">b</font><font color="#ff40ff">\n</font><font color="#ffff00">c</font>&quot;)<br>
<font color="#ffff00">38 </font><br>
<font color="#ffff00">39 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">print</font>&nbsp;&quot;<font color="#ffff00">new file:</font>&quot;&nbsp;+ filename<br>
<font color="#ffff00">40 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">print</font>&nbsp;&quot;<font color="#ffff00">file content: a</font><font color="#ff40ff">\n</font><font color="#ffff00">b</font><font color="#ff40ff">\n</font><font color="#ffff00">c</font>&quot;<br>
<font color="#ffff00">41 </font><br>
<font color="#ffff00">42 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">print</font>&nbsp;&quot;<font color="#ffff00">--------start test---------</font>&quot;<br>
<font color="#ffff00">43 </font><br>
<font color="#ffff00">44 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">print</font>&nbsp;filename, &quot;<font color="#ffff00">line:</font>&quot;, 2, &quot;<font color="#ffff00">left add # --&gt; #b?</font>&quot;<br>
<font color="#ffff00">45 </font>&nbsp;&nbsp;&nbsp;&nbsp;rewrite_line(filename, 2, &quot;<font color="#ffff00">#</font>&quot;, left=True)<br>
<font color="#ffff00">46 </font>&nbsp;&nbsp;&nbsp;&nbsp;cat(filename)<br>
<font color="#ffff00">47 </font><br>
<font color="#ffff00">48 </font><br>
<font color="#ffff00">49 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">print</font>&nbsp;filename, &quot;<font color="#ffff00">line:</font>&quot;, 2, &quot;<font color="#ffff00">right add #END --&gt; b#END?</font>&quot;<br>
<font color="#ffff00">50 </font>&nbsp;&nbsp;&nbsp;&nbsp;rewrite_line(filename, 2, &quot;<font color="#ffff00">#END</font>&quot;, left=False, right=True)<br>
<font color="#ffff00">51 </font>&nbsp;&nbsp;&nbsp;&nbsp;cat(filename)<br>
<font color="#ffff00">52 </font><br>
<font color="#ffff00">53 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">print</font>&nbsp;filename, &quot;<font color="#ffff00">line:</font>&quot;, 1, &quot;<font color="#ffff00">&nbsp;rewrite a --&gt; zhipeng?</font>&quot;<br>
<font color="#ffff00">54 </font>&nbsp;&nbsp;&nbsp;&nbsp;rewrite_line(filename, 1, &quot;<font color="#ffff00">zhipeng</font>&quot;, left=False, right=False)<br>
<font color="#ffff00">55 </font>&nbsp;&nbsp;&nbsp;&nbsp;cat(filename)<br>
<font color="#ffff00">56 </font><br>
<font color="#ffff00">57 </font>&nbsp;&nbsp;&nbsp;&nbsp;os.remove(filename)<br>
<font color="#ffff00">58 </font><br>
<font color="#ffff00">59 </font><br>
<font color="#ffff00">60 </font><font color="#ffff00">if</font>&nbsp;__name__ == &quot;<font color="#ffff00">__main__</font>&quot;:<br>
<font color="#ffff00">61 </font>&nbsp;&nbsp;&nbsp;&nbsp;test()<br>
</font></body>
</html>

1 个答案:

答案 0 :(得分:0)

# implement
def mark(ifn, ofn, linenum):
    with open(ifn, "rt") as ifile:
        with open(ofn, "wt") as ofile:
            n = 0
            for line in ifile.readlines():
                n = n + 1
                if n == linenum:
                    ofile.write("---")
                ofile.write(line)

# execute
mark("a.txt", "b.txt", 4)