Docs/Python/Python:文件的读取、创建、追加、删除、清空.html
2022-10-18 16:59:37 +08:00

165 lines
No EOL
11 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="tool" content="leanote-desktop-app">
<title>Python文件的读取、创建、追加、删除、清空</title>
<style>
*{font-family:"lucida grande","lucida sans unicode",lucida,helvetica,"Hiragino Sans GB","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif;}
body {
margin: 0;
}
/*公用文字样式*/
h1{font-size:30px}h2{font-size:24px}h3{font-size:18px}h4{font-size:14px}
.note-container{
width:850px;
margin:auto;
padding: 10px 20px;
box-shadow: 1px 1px 10px #eee;
}
#title {
margin: 0;
}
table {
margin-bottom: 16px;
border-collapse: collapse;
}
table th, table td {
padding: 6px 13px;
border: 1px solid #ddd;
}
table th {
font-weight: bold;
}
table tr {
background-color: none;
border-top: 1px solid #ccc;
}
table tr:nth-child(2n) {
background-color: rgb(247, 247, 249);
}
.mce-item-table, .mce-item-table td, .mce-item-table th, .mce-item-table caption {
border: 1px solid #ddd;
border-collapse: collapse;
padding: 6px 13px;
}
blockquote {
border-left-width:10px;
background-color:rgba(128,128,128,0.05);
border-top-right-radius:5px;
border-bottom-right-radius:5px;
padding:15px 20px;
border-left:5px solid rgba(128,128,128,0.075);
}
blockquote p {
margin-bottom:1.1em;
font-size:1em;
line-height:1.45
}
blockquote ul:last-child,blockquote ol:last-child {
margin-bottom:0
}
pre {
padding: 18px;
background-color: #f7f7f9;
border: 1px solid #e1e1e8;
border-radius: 3px;
display: block;
}
code {
padding: 2px 4px;
font-size: 90%;
color: #c7254e;
white-space: nowrap;
background-color: #f9f2f4;
border-radius: 4px;
}
.footnote {
vertical-align: top;
position: relative;
top: -0.5em;
font-size: .8em;
}
hr {
margin:2em 0
}
img {
max-width:100%
}
pre {
word-break:break-word
}
p,pre,pre.prettyprint,blockquote {
margin:0 0 1.1em
}
hr {
margin:2em 0
}
img {
max-width:100%
}
.sequence-diagram,.flow-chart {
text-align:center;
margin-bottom:1.1em
}
.sequence-diagram text,.flow-chart text {
font-size:15px !important;
font-family:"Source Sans Pro",sans-serif !important
}
.sequence-diagram [fill="#ffffff"],.flow-chart [fill="#ffffff"] {
fill:#f6f6f6
}
.sequence-diagram [stroke="#000000"],.flow-chart [stroke="#000000"] {
stroke:#3f3f3f
}
.sequence-diagram text[stroke="#000000"],.flow-chart text[stroke="#000000"] {
stroke:none
}
.sequence-diagram [fill="#000"],.flow-chart [fill="#000"],.sequence-diagram [fill="#000000"],.flow-chart [fill="#000000"],.sequence-diagram [fill="black"],.flow-chart [fill="black"] {
fill:#3f3f3f
}
ul,ol {
margin-bottom:1.1em
}
ul ul,ol ul,ul ol,ol ol {
margin-bottom:1.1em
}
kbd {
padding:.1em .6em;
border:1px solid rgba(63,63,63,0.25);
-webkit-box-shadow:0 1px 0 rgba(63,63,63,0.25);
box-shadow:0 1px 0 rgba(63,63,63,0.25);
font-size:.7em;
font-family:sans-serif;
background-color:#fff;
color:#333;
border-radius:3px;
display:inline-block;
margin:0 .1em;
white-space:nowrap
}
.toc ul {
list-style-type:none;
margin-bottom:15px
}
</style>
<!-- 该css供自定义样式 -->
<link href="../leanote-html.css" rel="stylesheet">
</head>
<body>
<div class="note-container">
<h1 class="title" id="leanote-title">Python文件的读取、创建、追加、删除、清空</h1>
<div class="content-html" id="leanote-content"><div>一、用Python创建一个新文件内容是从0到9的整数, 每个数字占一行:</div><div>#python</div><div>&gt;&gt;&gt;f=open('f.txt','w')&nbsp;&nbsp;&nbsp; # r只读w可写a追加</div><div>&gt;&gt;&gt;for i in range(0,10):f.write(str(i)+'\n')</div><div>.&nbsp; .&nbsp; .</div><div>&gt;&gt;&gt; f.close()</div><div>二、文件内容追加从0到9的10个随机整数</div><div>#python</div><div>&gt;&gt;&gt;import random</div><div>&gt;&gt;&gt;f=open('f.txt','a')</div><div>&gt;&gt;&gt;for i in range(0,10):f.write(str(random.randint(0,9)))</div><div>.&nbsp; .&nbsp; .</div><div>&gt;&gt;&gt;f.write('\n')</div><div>&gt;&gt;&gt;f.close()</div><div>三、文件内容追加从0到9的随机整数, 10个数字一行共10行</div><div>#python</div><div>&gt;&gt;&gt; import random</div><div>&gt;&gt;&gt; f=open('f.txt','a')</div><div>&gt;&gt;&gt; for i in range(0,10):</div><div>.&nbsp; .&nbsp; .&nbsp;&nbsp;&nbsp;&nbsp; for i in range(0,10):f.write(str(random.randint(0,9)))&nbsp;</div><div>.&nbsp; .&nbsp; .&nbsp;&nbsp;&nbsp;&nbsp; f.write('\n')&nbsp;&nbsp;&nbsp;&nbsp;</div><div>.&nbsp; .&nbsp; .</div><div>&gt;&gt;&gt; f.close()</div><div>四、把标准输出定向到文件:</div><div>#python</div><div>&gt;&gt;&gt; import sys</div><div>&gt;&gt;&gt; sys.stdout = open("stdout.txt", "w")</div><div>&gt;&gt;&gt;&nbsp; . . .</div><div>&nbsp;</div><div>五、文件的读写</div><div>一、文件打开:</div><div>f = file(name[, mode[, buffering]])</div><div>入口参数:&nbsp;&nbsp; name 文件名</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode&nbsp;&nbsp; 选项,字符串</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; buffering&nbsp;&nbsp; 是否缓冲 (0=不缓冲1=缓冲, &gt;1的int数=缓冲区大小)</div><div>返回值 : 文件对象</div><div>mode 选项:</div><div>"r"&nbsp;&nbsp; 以读方式打开,只能读文件 如果文件不存在,会发生异常&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div><div>"w" 以写方式打开,只能写文件, 如果文件不存在,创建该文件</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果文件已存在,先清空,再打开文件</div><div>"rb"&nbsp;&nbsp; 以二进制读方式打开,只能读文件 如果文件不存在,会发生异常&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div><div>"wb" 以二进制写方式打开,只能写文件, 如果文件不存在,创建该文件</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果文件已存在,先清空,再打开文件</div><div>"rt"&nbsp;&nbsp; 以文本读方式打开,只能读文件 如果文件不存在,会发生异常&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div><div>"wt" 以文本写方式打开,只能写文件, 如果文件不存在,创建该文件</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果文件已存在,先清空,再打开文件</div><div>"rb+"&nbsp;&nbsp; 以二进制读方式打开,可以读、写文件 如果文件不存在,会发生异常&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div><div>"wb+" 以二进制写方式打开,可以读、写文件, 如果文件不存在,创建该文件</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果文件已存在,先清空,再打开文件</div><div>二、关闭文件</div><div>f.close()</div><div>当文件读写完毕后,应关闭文件。</div><div>三、清空文件内容</div><div>f.truncate()</div><div>注意:仅当以 "r+"&nbsp;&nbsp; "rb+"&nbsp;&nbsp;&nbsp; "w"&nbsp;&nbsp; "wb" "wb+"等以可写模式打开的文件才可以执行该功能。</div><div>四、文件的指针定位与查询</div><div>1文件指针</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 文件被打开后,其对象保存在 f 中, 它会记住文件的当前位置,以便于执行读、写操作,这个位置称为文件的指针( 一个从文件头部开始计算的字节数 long 类型 )。</div><div>2文件打开时的位置:</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以"r"&nbsp;&nbsp; "r+"&nbsp;&nbsp; "rb+" 读方式, "w"&nbsp;&nbsp; "w+"&nbsp;&nbsp; "wb+"写方式 打开的文件,</div><div>&nbsp;&nbsp;&nbsp;&nbsp; 一开始,文件指针均指向文件的头部。</div><div>(3) 获取文件指针的值:</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L = f.tell()</div><div>(4) 移动文件的指针</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f.seek(&nbsp;&nbsp; 偏移量, 选项 )</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 选项 =0 时, 表示将文件指针指向从文件头部到 "偏移量"字节处。</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 选项 =1 时, 表示将文件指针指向从文件的当前位置,向后移动 "偏移量"字节。</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 选项 =2 时, 表示将文件指针指向从文件的尾部,,向前移动 "偏移量"字节。</div><div>五、从文件读取指内容&nbsp;&nbsp;&nbsp;</div><div>1 文本文件(以"rt"方式打开的文件)的读取&nbsp;&nbsp;</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; s = f.readline(&nbsp;&nbsp;&nbsp;&nbsp; )</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 返回值: s 是字符串,从文件中读取的一行,含行结束符。</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说明: (1)&nbsp;&nbsp;如果 len( s ) =0 表示已到文件尾</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2)&nbsp;&nbsp; 如果是文件的最后一行,有可能没有行结束符</div><div>2 二进制文件(以"rb"、"rb+"、"wb+" 方式打开的文件)的读取&nbsp;&nbsp;</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; s = f.read(&nbsp;&nbsp;&nbsp; n )</div><div>&nbsp;&nbsp;&nbsp;</div><div>&nbsp;&nbsp;&nbsp;&nbsp; 说明: (1)&nbsp;&nbsp;如果 len( s ) =0 表示已到文件尾</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2)&nbsp;&nbsp; 文件读取后,文件的指针向后移动 len(s) 字节。</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3如果磁道已坏会发生异常。</div><div>六、向文件写入一个字符串&nbsp;&nbsp;&nbsp;</div><div>&nbsp;&nbsp;&nbsp; f.write(&nbsp;&nbsp;&nbsp; s )</div><div>&nbsp;&nbsp;&nbsp; 参数:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s 要写入的字符串</div><div>&nbsp;&nbsp;&nbsp;&nbsp;说明: (1)文件写入后,文件的指针向后移动 len(s) 字节。</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2如果磁道已坏或磁盘已满会发生异常。</div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div><div>返回值: s 是字符串,从文件中读取的内容</div><div>七、删除文件</div><div>import os</div><div>os.remove(file)</div></div>
</div>
<!-- 该js供其它处理 -->
<script src="../leanote-html.js"></script>
</body>
</html>