-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpython-files.html
105 lines (105 loc) · 32.9 KB
/
python-files.html
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=2"><meta name="theme-color" content="#222"><meta http-equiv="X-UA-COMPATIBLE" content="IE=edge,chrome=1"><meta name="renderer" content="webkit"><link rel="icon" type="image/ico" sizes="32x32" href="/assets/favicon.ico"><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png"><link rel="alternate" href="/rss.xml" title="Jiankychen's Blog" type="application/rss+xml"><link rel="alternate" href="/atom.xml" title="Jiankychen's Blog" type="application/atom+xml"><link rel="alternate" type="application/json" title="Jiankychen's Blog" href="https://jiankychen.github.io/feed.json"><link rel="preconnect" href="https://lf9-cdn-tos.bytecdntp.com"><link rel="preconnect" href="https://at.alicdn.com"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Mulish:400,400italic,700,700italic%7CFredericka%20the%20Great:400,400italic,700,700italic%7CNoto%20Serif%20JP:400,400italic,700,700italic%7CNoto%20Serif%20SC:400,400italic,700,700italic%7CInconsolata:400,400italic,700,700italic&display=swap&subset=latin,latin-ext" media="none" onload="this.media='all'"><link rel="stylesheet" href="/css/app.css?v=0.4.2"><link rel="modulepreload" href="/js/chunk-7IVLRIQ3.js"><link rel="modulepreload" href="/js/chunk-IXT6LZJL.js"><link rel="modulepreload" href="/js/chunk-PHSEV26P.js"><link rel="modulepreload" href="/js/chunk-XHQGHZCW.js"><link rel="modulepreload" href="/js/comments-TUWNDU5I.js"><link rel="modulepreload" href="/js/post-P6IN2S3Y.js"><link rel="modulepreload" href="/js/quicklink-HAJEHOPK.js"><link rel="modulepreload" href="/js/search-WFXK2K66.js"><link rel="modulepreload" href="/js/siteInit.js"><link rel="stylesheet" href="https://npm.webcache.cn/@waline/[email protected]/dist/waline.css" media="none" onload="this.media='all'"><link rel="preload" href="https://i.imgtg.com/2023/03/09/Y0zdB.jpg" as="image" fetchpriority="high"><link rel="preload" href="https://img.timelessq.com/images/2022/07/26/8fe50780c15461b629c9aeab5a7f2acd.jpg" as="image" fetchpriority="high"><link rel="preload" href="https://i.imgtg.com/2023/03/09/YS6XY.jpg" as="image" fetchpriority="high"><link rel="preload" href="https://img.timelessq.com/images/2022/07/26/e5221f7d85b0900837a45fb933fa34ec.jpg" as="image" fetchpriority="high"><link rel="preload" href="https://img.timelessq.com/images/2022/07/26/65d0bfef68566882ce0560cab2e87921.jpg" as="image" fetchpriority="high"><link rel="preload" href="https://i.imgtg.com/2023/03/09/Y0xvg.jpg" as="image" fetchpriority="high"><link rel="canonical" href="https://jiankychen.github.io/python-files"><title>Python 文件操作</title><meta name="generator" content="Hexo 7.0.0"></head><body itemscope="" itemtype="http://schema.org/WebPage"><div id="loading"><div class="cat"><div class="body"></div><div class="head"><div class="face"></div></div><div class="foot"><div class="tummy-end"></div><div class="bottom"></div><div class="legs left"></div><div class="legs right"></div></div><div class="paw"><div class="hands left"></div><div class="hands right"></div></div></div></div><div id="container"><header id="header" itemscope="" itemtype="http://schema.org/WPHeader"><div class="inner"><div id="brand"><div class="pjax"><h1 itemprop="name headline">Python 文件操作</h1><div class="meta"><span class="item" title="创建时间:2023-01-14 17:51:32"><span class="icon"><i class="ic i-calendar"></i></span><span class="text">发表于</span><time itemprop="dateCreated datePublished" datetime="2023-01-14T17:51:32+08:00">2023-01-14</time></span><span class="item" title="本文字数"><span class="icon"><i class="ic i-pen"></i></span><span class="text">本文字数</span><span>2.3k</span><span class="text">字</span></span><span class="item" title="阅读时长"><span class="icon"><i class="ic i-clock"></i></span><span class="text">阅读时长</span><span>2 分钟</span></span></div></div></div><nav id="nav"><div class="inner"><div class="toggle"><div class="lines" aria-label="切换导航栏"><span class="line"></span><span class="line"></span><span class="line"></span></div></div><ul class="menu"><li class="item title"><a href="/" rel="start">Jiankychen</a></li></ul><ul class="right" id="rightNav"><li class="item theme"><i class="ic i-sun"></i></li><li class="item search"><i class="ic i-search"></i></li></ul></div></nav></div><div class="pjax" id="imgs"><ul><li class="item" style="background-image: url("https://i.imgtg.com/2023/03/09/Y0zdB.jpg");"></li><li class="item" style="background-image: url("https://img.timelessq.com/images/2022/07/26/8fe50780c15461b629c9aeab5a7f2acd.jpg");"></li><li class="item" style="background-image: url("https://i.imgtg.com/2023/03/09/YS6XY.jpg");"></li><li class="item" style="background-image: url("https://img.timelessq.com/images/2022/07/26/e5221f7d85b0900837a45fb933fa34ec.jpg");"></li><li class="item" style="background-image: url("https://img.timelessq.com/images/2022/07/26/65d0bfef68566882ce0560cab2e87921.jpg");"></li><li class="item" style="background-image: url("https://i.imgtg.com/2023/03/09/Y0xvg.jpg");"></li></ul></div></header><div id="waves"><svg class="waves" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 24 150 28" preserveAspectRatio="none" shape-rendering="auto"><defs><path id="gentle-wave" d="M-160 44c30 0 58-18 88-18s 58 18 88 18 58-18 88-18 58 18 88 18 v44h-352z"></path></defs><g class="parallax"><use xlink:href="#gentle-wave" x="48" y="0"></use><use xlink:href="#gentle-wave" x="48" y="3"></use><use xlink:href="#gentle-wave" x="48" y="5"></use><use xlink:href="#gentle-wave" x="48" y="7"></use></g></svg></div><main><div class="inner"><div class="pjax" id="main"><div class="article wrap"><div class="breadcrumb" itemlistelement="" itemscope="" itemtype="https://schema.org/BreadcrumbList"><i class="ic i-home"></i><span><a href="/">首页</a></span><i class="ic i-angle-right"></i><span class="current" itemprop="itemListElement" itemscope="itemscope" itemtype="https://schema.org/ListItem"><a href="/categories/Python/" itemprop="item" rel="index" title="分类于Python"><span itemprop="name">Python<meta itemprop="position" content="0"></span></a></span></div><article class="post block" itemscope="itemscope" itemtype="http://schema.org/Article" lang="zh-CN"><link itemprop="mainEntityOfPage" href="https://jiankychen.github.io/python-files.html"><span hidden="hidden" itemprop="author" itemscope="itemscope" itemtype="http://schema.org/Person"><meta itemprop="image" content="/assets/avatar.jpg"><meta itemprop="name" content="Jiankychen"><meta itemprop="description" content="Never put off till tomorrow what you can do today, "></span><span hidden="hidden" itemprop="publisher" itemscope="itemscope" itemtype="http://schema.org/Organization"><meta itemprop="name" content="Jiankychen's Blog"></span><div class="body md" itemprop="articleBody"><h1 id="文件编码"><a class="anchor" href="#文件编码">#</a> 文件编码</h1>
<p>编码:一种规则集合,记录了内容和二进制间进行相互转换的逻辑</p>
<p>计算机中有许多可用编码,例如:</p>
<ul>
<li>UTF-8</li>
<li>GBK</li>
<li>Big5</li>
</ul>
<p>UTF-8 是目前全球通用的编码格式</p>
<p>除非有特殊需求,否则,一律以 UTF-8 格式进行文件编码即可</p>
<h1 id="文件的读取"><a class="anchor" href="#文件的读取">#</a> 文件的读取</h1>
<h2 id="访问模式"><a class="anchor" href="#访问模式">#</a> 访问模式</h2>
<p>常用的三种基础访问模式:</p>
<ul>
<li><code>'r'</code> :以 <strong>只读</strong> 方式打开文件(默认模式)。文件的指针将会放在文件的开头</li>
<li><code>'w'</code> :打开文件只用于 <strong>写入</strong> 。如果该文件已存在,则打开文件,并从开头开始编辑(原有内容会被删除);如果该文件不存在,创建新文件</li>
<li><code>'a'</code> :打开一个文件用于 <strong>追加</strong> 。如果该文件已存在,新的内容将会被写入到已有内容之后;如果该文件不存在,创建新文件进行写入</li>
</ul>
<h2 id="打开文件"><a class="anchor" href="#打开文件">#</a> 打开文件</h2>
<p>使用 <code>open</code> 函数可以打开一个已经存在的文件,或者创建一个新文件(使用 <code>'w'</code> 模式时)</p>
<figure class="highlight python"><figcaption data-lang="python"></figcaption><table><tbody><tr><td data-num="1"></td><td><pre><span class="token builtin">open</span><span class="token punctuation">(</span>name<span class="token punctuation">,</span> mode<span class="token punctuation">,</span> encoding<span class="token punctuation">)</span></pre></td></tr></tbody></table></figure><p>其中:</p>
<ul>
<li>name:字符串,表示目标文件的文件名(可以包含文件所在的路径)</li>
<li>mode:设置打开文件的模式(访问模式):只读、写入、追加等</li>
<li>encoding:编码格式(推荐使用 UTF-8)</li>
</ul>
<p><strong>操作文件需要通过 <code>open</code> 函数打开文件得到文件对象</strong></p>
<p>例如:</p>
<figure class="highlight python"><figcaption data-lang="python"></figcaption><table><tbody><tr><td data-num="1"></td><td><pre><span class="token comment"># encoding 不是第三个位置参数,需要采用关键字传参</span></pre></td></tr><tr><td data-num="2"></td><td><pre>file_obj <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">'python.txt'</span><span class="token punctuation">,</span> <span class="token string">'r'</span><span class="token punctuation">,</span> encoding<span class="token operator">=</span><span class="token string">'UTF-8'</span><span class="token punctuation">)</span></pre></td></tr></tbody></table></figure><p>注意:此时的 <code>file_obj</code> 是 <code>open</code> 函数的文件对象(Python 中一种特殊的数据类型),拥有属性和方法,可以使用 <code>对象.属性</code> 或 <code>对象.方法</code> 对其进行访问</p>
<h2 id="关闭文件"><a class="anchor" href="#关闭文件">#</a> 关闭文件</h2>
<p><code>close</code> 关闭文件对象,即,关闭对文件的占用</p>
<figure class="highlight python"><figcaption data-lang="python"></figcaption><table><tbody><tr><td data-num="1"></td><td><pre>file_obj<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr></tbody></table></figure><p>如果不调用 <code>close</code> ,并且程序没有停止运行,那么这个文件将一直被 Python 程序占用(除 <code>with open</code> 语法外)</p>
<h2 id="读操作"><a class="anchor" href="#读操作">#</a> 读操作</h2>
<h3 id="read-方法"><a class="anchor" href="#read-方法">#</a> read 方法</h3>
<p><code>read</code> 可以读取给定长度的数据</p>
<figure class="highlight python"><figcaption data-lang="python"></figcaption><table><tbody><tr><td data-num="1"></td><td><pre>file_obj<span class="token punctuation">.</span>read<span class="token punctuation">(</span>num<span class="token punctuation">)</span></pre></td></tr></tbody></table></figure><p>其中,num 表示要从文件中读取的数据的长度(字节数)。如果没有传入 num,表示读取文件中所有的数据</p>
<h3 id="readlines-方法"><a class="anchor" href="#readlines-方法">#</a> readlines 方法</h3>
<p><code>readlines</code> 可以一次性读取整个文件中的内容。 <code>readlines</code> 返回的是一个列表,其中,文件每一行的数据对应列表的一个元素</p>
<figure class="highlight python"><figcaption data-lang="python"></figcaption><table><tbody><tr><td data-num="1"></td><td><pre>file_obj<span class="token punctuation">.</span>readlines<span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr></tbody></table></figure><h3 id="readline-方法"><a class="anchor" href="#readline-方法">#</a> readline 方法</h3>
<p><code>readline</code> 一次读取一行数据</p>
<figure class="highlight python"><figcaption data-lang="python"></figcaption><table><tbody><tr><td data-num="1"></td><td><pre>file_obj<span class="token punctuation">.</span>readline<span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr></tbody></table></figure><h3 id="for-循环读取文件行"><a class="anchor" href="#for-循环读取文件行">#</a> for 循环读取文件行</h3>
<p>可以使用 <code>for</code> 循环遍历读取文件的每一行内容</p>
<figure class="highlight python"><figcaption data-lang="python"></figcaption><table><tbody><tr><td data-num="1"></td><td><pre><span class="token comment"># 临时变量 line 记录文件的一行数据</span></pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token keyword">for</span> line <span class="token keyword">in</span> <span class="token builtin">open</span><span class="token punctuation">(</span>name<span class="token punctuation">,</span> mode<span class="token punctuation">,</span> encoding<span class="token punctuation">)</span><span class="token punctuation">:</span></pre></td></tr><tr><td data-num="3"></td><td><pre> <span class="token keyword">print</span><span class="token punctuation">(</span>line<span class="token punctuation">)</span></pre></td></tr></tbody></table></figure><h3 id="with-open-语法"><a class="anchor" href="#with-open-语法">#</a> with open 语法</h3>
<p>通过在 <code>with open</code> 的语句块中对文件进行操作,可以在操作完成后自动关闭文件,避免因忘记 <code>close</code> 文件对象而导致文件被占用</p>
<figure class="highlight python"><figcaption data-lang="python"></figcaption><table><tbody><tr><td data-num="1"></td><td><pre><span class="token keyword">with</span> <span class="token builtin">open</span><span class="token punctuation">(</span>name<span class="token punctuation">,</span> mode<span class="token punctuation">,</span> encoding<span class="token punctuation">)</span> <span class="token keyword">as</span> file_obj<span class="token punctuation">:</span></pre></td></tr><tr><td data-num="2"></td><td><pre> file_obj<span class="token punctuation">.</span>readlines<span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr></tbody></table></figure><h1 id="文件的写入"><a class="anchor" href="#文件的写入">#</a> 文件的写入</h1>
<h2 id="打开文件-2"><a class="anchor" href="#打开文件-2">#</a> 打开文件</h2>
<figure class="highlight python"><figcaption data-lang="python"></figcaption><table><tbody><tr><td data-num="1"></td><td><pre>file_obj <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span>name<span class="token punctuation">,</span> mode<span class="token operator">=</span><span class="token string">'w'</span><span class="token punctuation">,</span> encoding<span class="token operator">=</span><span class="token string">'UTF-8'</span><span class="token punctuation">)</span></pre></td></tr></tbody></table></figure><p>使用 <code>'w'</code> 模式时:</p>
<ul>
<li>如果文件不存在,会创建新文件</li>
<li>如果文件存在,会将原有内容清空</li>
</ul>
<h2 id="写操作"><a class="anchor" href="#写操作">#</a> 写操作</h2>
<figure class="highlight python"><figcaption data-lang="python"></figcaption><table><tbody><tr><td data-num="1"></td><td><pre>file_obj<span class="token punctuation">.</span>write<span class="token punctuation">(</span>content<span class="token punctuation">)</span></pre></td></tr></tbody></table></figure><p><code>content</code> 表示需要写入的内容</p>
<p>注意:调用 <code>write</code> 时,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区</p>
<p>当调用 <code>flush</code> 时,内容会真正写入文件</p>
<figure class="highlight python"><figcaption data-lang="python"></figcaption><table><tbody><tr><td data-num="1"></td><td><pre>file_obj<span class="token punctuation">.</span>flush<span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr></tbody></table></figure><blockquote>
<p><code>write</code> 写入内容 + <code>flush</code> 刷新内容到硬盘,这样做是避免因频繁操作硬盘而导致效率下降</p>
</blockquote>
<h2 id="关闭文件-2"><a class="anchor" href="#关闭文件-2">#</a> 关闭文件</h2>
<figure class="highlight python"><figcaption data-lang="python"></figcaption><table><tbody><tr><td data-num="1"></td><td><pre>file_obj<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr></tbody></table></figure><p>注意: <code>close</code> 方法内置了 <code>flush</code> 的功能</p>
<h1 id="文件的追加写入"><a class="anchor" href="#文件的追加写入">#</a> 文件的追加写入</h1>
<h2 id="打开文件-3"><a class="anchor" href="#打开文件-3">#</a> 打开文件</h2>
<figure class="highlight python"><figcaption data-lang="python"></figcaption><table><tbody><tr><td data-num="1"></td><td><pre>file_obj <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span>name<span class="token punctuation">,</span> <span class="token string">'a'</span><span class="token punctuation">,</span> encoding<span class="token operator">=</span><span class="token string">'UTF-8'</span><span class="token punctuation">)</span></pre></td></tr></tbody></table></figure><p>使用 'a' 模式时:</p>
<ul>
<li>如果文件不存在,会创建文件</li>
<li>如果文件存在,会在文件最后追加写入</li>
</ul>
<h2 id="追加写入操作"><a class="anchor" href="#追加写入操作">#</a> 追加写入操作</h2>
<figure class="highlight python"><figcaption data-lang="python"></figcaption><table><tbody><tr><td data-num="1"></td><td><pre><span class="token comment"># 写入内容 content</span></pre></td></tr><tr><td data-num="2"></td><td><pre>file_obj<span class="token punctuation">.</span>write<span class="token punctuation">(</span>content<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="3"></td><td><pre></pre></td></tr><tr><td data-num="4"></td><td><pre><span class="token comment"># 刷新内容</span></pre></td></tr><tr><td data-num="5"></td><td><pre>file_obj<span class="token punctuation">.</span>flush<span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr></tbody></table></figure><h2 id="关闭文件-3"><a class="anchor" href="#关闭文件-3">#</a> 关闭文件</h2>
<figure class="highlight python"><figcaption data-lang="python"></figcaption><table><tbody><tr><td data-num="1"></td><td><pre>file_obj<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span></pre></td></tr></tbody></table></figure><p>参考:<a target="_blank" rel="noopener" href="https://www.bilibili.com/video/BV1qW4y1a7fU/">黑马程序员</a></p>
</div><footer><div class="meta"><span class="item"><span class="icon"><i class="ic i-calendar-check"></i></span><span class="text">更新于</span><time title="修改时间:2024-06-08 23:09:17" itemprop="dateModified" datetime="2024-06-08T23:09:17+08:00">2024-06-08</time></span></div><div id="copyright"><ul><li class="author"><strong>本文作者:</strong>Jiankychen<i class="ic i-at"><em>@</em></i>Jiankychen's Blog</li><li class="link"><strong>本文链接:</strong><a href="https://jiankychen.github.io/python-files.html" title="Python 文件操作">https://jiankychen.github.io/python-files.html</a></li><li class="license"><strong>版权声明:</strong>本站所有文章除特别声明外,均采用 <a target="_blank" rel="noopener" href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh"><i class="ic i-creative-commons"><em>(CC)</em></i>BY-NC-SA</a> 许可协议。转载请注明出处!</li></ul></div></footer></article></div><div class="post-nav"><div class="item left"><a href="/job.html" rel="prev" itemprop="url" data-background-image="https://i.imgtg.com/2023/03/09/YS2LU.jpg" title="23 求职笔面试"><span class="type">上一篇</span><h3>23 求职笔面试</h3></a></div><div class="item right"><a href="/python-modules.html" rel="next" itemprop="url" data-background-image="https://img.timelessq.com/images/2022/07/26/42bab566f107b9a16542343e0368fb77.jpg" title="Python 异常、模块、包"><span class="type">下一篇</span><span class="category"><i class="ic i-flag"></i>Python</span><h3>Python 异常、模块、包</h3></a></div></div><div class="wrap" id="comments"></div></div><div id="sidebar"><div class="inner"><div class="panels"><div class="inner"><div class="contents panel pjax" data-title="文章目录"><ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#%E6%96%87%E4%BB%B6%E7%BC%96%E7%A0%81"><span class="toc-number">1.</span> <span class="toc-text"> 文件编码</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#%E6%96%87%E4%BB%B6%E7%9A%84%E8%AF%BB%E5%8F%96"><span class="toc-number">2.</span> <span class="toc-text"> 文件的读取</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E8%AE%BF%E9%97%AE%E6%A8%A1%E5%BC%8F"><span class="toc-number">2.1.</span> <span class="toc-text"> 访问模式</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E6%89%93%E5%BC%80%E6%96%87%E4%BB%B6"><span class="toc-number">2.2.</span> <span class="toc-text"> 打开文件</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%85%B3%E9%97%AD%E6%96%87%E4%BB%B6"><span class="toc-number">2.3.</span> <span class="toc-text"> 关闭文件</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E8%AF%BB%E6%93%8D%E4%BD%9C"><span class="toc-number">2.4.</span> <span class="toc-text"> 读操作</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#read-%E6%96%B9%E6%B3%95"><span class="toc-number">2.4.1.</span> <span class="toc-text"> read 方法</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#readlines-%E6%96%B9%E6%B3%95"><span class="toc-number">2.4.2.</span> <span class="toc-text"> readlines 方法</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#readline-%E6%96%B9%E6%B3%95"><span class="toc-number">2.4.3.</span> <span class="toc-text"> readline 方法</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#for-%E5%BE%AA%E7%8E%AF%E8%AF%BB%E5%8F%96%E6%96%87%E4%BB%B6%E8%A1%8C"><span class="toc-number">2.4.4.</span> <span class="toc-text"> for 循环读取文件行</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#with-open-%E8%AF%AD%E6%B3%95"><span class="toc-number">2.4.5.</span> <span class="toc-text"> with open 语法</span></a></li></ol></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#%E6%96%87%E4%BB%B6%E7%9A%84%E5%86%99%E5%85%A5"><span class="toc-number">3.</span> <span class="toc-text"> 文件的写入</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E6%89%93%E5%BC%80%E6%96%87%E4%BB%B6-2"><span class="toc-number">3.1.</span> <span class="toc-text"> 打开文件</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%86%99%E6%93%8D%E4%BD%9C"><span class="toc-number">3.2.</span> <span class="toc-text"> 写操作</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%85%B3%E9%97%AD%E6%96%87%E4%BB%B6-2"><span class="toc-number">3.3.</span> <span class="toc-text"> 关闭文件</span></a></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#%E6%96%87%E4%BB%B6%E7%9A%84%E8%BF%BD%E5%8A%A0%E5%86%99%E5%85%A5"><span class="toc-number">4.</span> <span class="toc-text"> 文件的追加写入</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E6%89%93%E5%BC%80%E6%96%87%E4%BB%B6-3"><span class="toc-number">4.1.</span> <span class="toc-text"> 打开文件</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E8%BF%BD%E5%8A%A0%E5%86%99%E5%85%A5%E6%93%8D%E4%BD%9C"><span class="toc-number">4.2.</span> <span class="toc-text"> 追加写入操作</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%85%B3%E9%97%AD%E6%96%87%E4%BB%B6-3"><span class="toc-number">4.3.</span> <span class="toc-text"> 关闭文件</span></a></li></ol></li></ol></div><div class="related panel pjax" data-title="系列文章"><ul><li><a href="/python-basics.html" rel="bookmark" title="Python 基本语法">Python 基本语法</a></li><li><a href="/python-container.html" rel="bookmark" title="Python 数据容器">Python 数据容器</a></li><li class="active"><a href="/python-files.html" rel="bookmark" title="Python 文件操作">Python 文件操作</a></li><li><a href="/python-modules.html" rel="bookmark" title="Python 异常、模块、包">Python 异常、模块、包</a></li><li><a href="/python-conda.html" rel="bookmark" title="conda 常用命令">conda 常用命令</a></li><li><a href="/python-pandas.html" rel="bookmark" title="pandas 基础">pandas 基础</a></li><li><a href="/python-oop.html" rel="bookmark" title="Python 面向对象">Python 面向对象</a></li></ul></div><div class="overview panel" data-title="站点概览"><div class="author" itemprop="author" itemscope="itemscope" itemtype="http://schema.org/Person"><img class="image" loading="lazy" decoding="async" itemprop="image" alt="Jiankychen" src="/assets/avatar.webp"><p class="name" itemprop="name">Jiankychen</p><div class="description" itemprop="description"></div></div><nav class="state"><div class="item posts"><a href="/archives/"><span class="count">51</span><span class="name">文章</span></a></div><div class="item categories"><a href="/categories/"><span class="count">8</span><span class="name">分类</span></a></div><div class="item tags"><a href="/tags/"><span class="count">20</span><span class="name">标签</span></a></div></nav><div class="social"><a target="_blank" rel="noopener" href="https://github.com/jiankychen" class="item github" title="https://github.com/jiankychen"><i class="ic i-github"></i></a><a href="mailto:[email protected]" class="item email" title="mailto:[email protected]"><i class="ic i-envelope"></i></a><a target="_blank" rel="noopener" href="https://music.163.com/#/user/home?id=447771275" class="item music" title="https://music.163.com/#/user/home?id=447771275"><i class="ic i-cloud-music"></i></a><a target="_blank" rel="noopener" href="https://www.zhihu.com/people/jiankychen" class="item zhihu" title="https://www.zhihu.com/people/jiankychen"><i class="ic i-zhihu"></i></a></div><div class="menu"><li class="item"><a href="/" rel="section"><i class="ic i-home"></i>首页</a></li><li class="item dropdown"><a href="#" onclick="return false;"><i class="ic i-feather"></i>文章</a><ul class="submenu"><li class="item"><a href="/archives/" rel="section"><i class="ic i-list-alt"></i>归档</a></li><li class="item"><a href="/categories/" rel="section"><i class="ic i-th"></i>分类</a></li><li class="item"><a href="/tags/" rel="section"><i class="ic i-tags"></i>标签</a></li></ul></li><li class="item dropdown"><a href="#" onclick="return false;"><i class="ic i-feather"></i>链接</a><ul class="submenu"><li class="item"><a href="/peers/" rel="section"><i class="ic i-magic"></i>链环</a></li><li class="item"><a href="/friends/" rel="section"><i class="ic i-heart"></i>友链</a></li></ul></li><li class="item dropdown"><a href="#" onclick="return false;"><i class="ic i-stars"></i>关于</a><ul class="submenu"><li class="item"><a href="/owner/" rel="section"><i class="ic i-user"></i>关于博主</a></li><li class="item"><a href="/site/" rel="section"><i class="ic i-paw"></i>关于本站</a></li><li class="item"><a href="/update/" rel="section"><i class="ic i-cloud"></i>更新日志</a></li></ul></li></div></div></div></div><ul id="quick"><li class="prev pjax"><a href="/python-modules.html" rel="prev" title="上一篇"><i class="ic i-chevron-left"></i></a></li><li class="up"><i class="ic i-arrow-up"></i></li><li class="down"><i class="ic i-arrow-down"></i></li><li class="next pjax"><a href="/job.html" rel="next" title="下一篇"><i class="ic i-chevron-right"></i></a></li><li class="percent"></li></ul></div></div><div class="dimmer"></div></div></main><footer id="footer"><div class="inner"><div class="widgets"><div class="rpost pjax"><h2>随机文章</h2><ul><li class="item"><div class="breadcrumb"><a href="/categories/Coding/" title="分类于Coding">Coding</a></div><span><a href="/leetcode-binarytree.html">LeetCode - 二叉树专题</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/Data-Structure/" title="分类于Data Structure">Data Structure</a></div><span><a href="/dynamic-programming.html">动态规划</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/Tutorial/" title="分类于Tutorial">Tutorial</a><i class="ic i-angle-right"></i><a href="/categories/Tutorial/Hexo/" title="分类于Hexo">Hexo</a></div><span><a href="/hexo-build.html">hexo 博客搭建与配置</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/Python/" title="分类于Python">Python</a></div><span><a href="/python-files.html">Python 文件操作</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/Coding/" title="分类于Coding">Coding</a></div><span><a href="/leetcode-traverse.html">LeetCode - 回溯专题</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/Coding/" title="分类于Coding">Coding</a></div><span><a href="/leetcode-stacks&queues.html">LeetCode - 栈与队列专题</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/Data-Structure/" title="分类于Data Structure">Data Structure</a></div><span><a href="/KMP.html">KMP 算法</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/Coding/" title="分类于Coding">Coding</a></div><span><a href="/leetcode-analog.html">LeetCode - 模拟专题</a></span></li><li class="item"><div class="breadcrumb"><a href="/categories/Coding/" title="分类于Coding">Coding</a></div><span><a href="/leetcode-string.html">LeetCode - 字符串专题</a></span></li><li class="item"><div class="breadcrumb"></div><span><a href="/job.html">23 求职笔面试</a></span></li></ul></div><div class="rpost pjax"><h2>最新评论</h2><ul class="leancloud-recent-comment" id="new-comment"></ul></div></div><div class="status"><div class="copyright">© 2021 -<span itemprop="copyrightYear">2024</span><span class="with-love"><i class="ic i-sakura rotate"></i></span><span class="author" itemprop="copyrightHolder">Jiankychen @ Jiankychen</span></div><div class="count"><span class="post-meta-item-icon"><i class="ic i-chart-area"></i></span><span title="站点总字数">955k 字</span><span class="post-meta-divider"> | </span><span class="post-meta-item-icon"><i class="ic i-coffee"></i></span><span title="站点阅读时长">14:28</span></div><div class="powered-by">基于 <a target="_blank" rel="noopener" href="https://hexo.io/">Hexo</a> & Theme.<a target="_blank" rel="noopener" href="https://github.com/theme-shoka-x/hexo-theme-shokaX/">ShokaX</a></div></div><script src="https://unpkg.com/[email protected]/bsz.pure.mini.js"></script><div id="busuanzi-wrap"><span class="ic i-eye"></span><span id="busuanzi_container_site_pv">本站总访问量 <span id="busuanzi_value_site_pv"></span> 次</span> | <span class="ic i-user"></span><span id="busuanzi_container_site_uv">本站总访客量 <span id="busuanzi_value_site_uv"></span> 次</span></div></div></footer></div><script data-config="" type="text/javascript">var LOCAL = {
ispost: true,
path: `/python-files`,
favicon: {
show: `Jiankychen`,
hide: `Jiankychen`
},
search: {
placeholder: "文章搜索",
empty: "关于 「 ${query} 」,什么也没搜到",
stats: "${time} ms 内找到 ${hits} 条结果"
},
copy_tex: false,
katex: false,
mermaid: false,
audio: undefined,
fancybox: true,
nocopy: false,
outime: true,
template: `<div class="note warning"><p><span class="label warning">文章时效性提示</span><br>这是一篇发布于 {{publish}} 天前,最后一次更新在 {{updated}} 天前的文章,部分信息可能已经发生改变,请注意甄别。</p></div>`,
quiz: {
choice: `单选题`,
multiple: `多选题`,
true_false: `判断题`,
essay: `问答题`,
gap_fill: `填空题`,
mistake: `错题备注`
},
ignores: [
(uri) => uri.includes('#'),
(uri) => new RegExp(LOCAL.path + '$').test(uri),
[]
]
};
</script><script src="https://lf9-cdn-tos.bytecdntp.com/cdn/expire-6-M/pace/1.2.4/pace.min.js" async=""></script><script src="https://polyfill.io/v3/polyfill.min.js?features=default,fetch" defer=""></script><script src="/js/siteInit.js?v=0.4.2" type="module" fetchpriority="high" defer=""></script></body></html>