天天看点

python文件操作

文件操作流程

1.打开文件,得到文件句柄并赋值给一个变量

2.通过句柄对文件进行操作

3.关闭文件

最基本的打开,只能阅读,不能操作.

<code>data </code><code>=</code> <code>open</code><code>(</code><code>"file"</code><code>,encoding</code><code>=</code><code>"utf-8"</code><code>).read()</code>

<code>print</code><code>(data)</code>

<code>print</code><code>(</code><code>type</code><code>(data))        </code><code>#字符串格</code>

<code>f </code><code>=</code> <code>open</code><code>(</code><code>"file"</code><code>,</code><code>"r"</code><code>,encoding</code><code>=</code><code>"utf-8"</code><code>)        文件句柄赋值给f</code>

<code>data </code><code>=</code> <code>f.read()</code>

<code>data2 </code><code>=</code> <code>f.read()             当这里读取时,python将从上次data读取的最后开始读取,也就是什么也没有。</code>

<code>r 读取文件         不能写;</code>

<code>w 创建一个文件     不能读;</code>

<code>a 追加内容         不覆盖文件,不能读取。</code>

<code>f.read()             阅读</code>

<code>f.write()            写文件</code>

<code>注意:</code>

<code>U表示在读取时,可以将\r\n自动替换成\n(与r或r</code><code>+</code><code>模式同使用)</code>

<code>    </code><code>rU</code>

<code>    </code><code>r</code><code>+</code><code>U</code>

<code>b表示处理二进制文件(如:FTP发送上传文件,linux可忽略,windows处理二进制文件时需要标注)</code>

读取前五行

<code> </code><code>方法一、</code>

<code>  </code><code>f </code><code>=</code> <code>open</code><code>(</code><code>"file"</code><code>,</code><code>"r"</code><code>,encoding</code><code>=</code><code>"utf-8"</code><code>)</code>

<code>  </code><code>print</code><code>(f.readline())</code>

<code>  </code><code>f.close()</code>

<code>方法二、</code>

<code>  </code><code>for</code> <code>i </code><code>in</code> <code>range</code><code>(</code><code>5</code><code>):</code>

<code>      </code><code>print</code><code>(f.readline())</code>

第五行不打印

<code>f.readlines()        是一个列表,</code>

<code>  </code><code>for</code> <code>i </code><code>in</code> <code>f.readlines():</code>

<code>      </code><code>print</code><code>(i.strip())         每行后面默认有一个换行符,用strip去掉;</code>

<code>方法一、</code>

<code>  </code><code>for</code> <code>index,i </code><code>in</code> <code>enumerate</code><code>(f.readlines()):</code>

<code>      </code><code>if</code> <code>index </code><code>=</code><code>=</code> <code>4</code><code>:</code>

<code>          </code><code>print</code><code>(</code><code>"------分割线--------"</code><code>)</code>

<code>          </code><code>continue</code>

<code>      </code><code>print</code><code>(i.strip())</code>

<code>  </code><code>count </code><code>=</code> <code>0</code>

<code>  </code><code>for</code> <code>i </code><code>in</code> <code>f:              f已经成为一个迭代器</code>

<code>      </code><code>if</code> <code>count </code><code>=</code><code>=</code> <code>4</code><code>:</code>

<code>          </code><code>print</code><code>(</code><code>"------分割线-------"</code><code>)</code>

<code>          </code><code>count </code><code>+</code><code>=</code> <code>1</code>

<code>          </code><code>continue</code>         <code>结束本次循环,进行下一次循环</code>

<code>      </code><code>count </code><code>+</code><code>=</code> <code>1</code>

文件方法:

f = open("file","r",encoding="utf-8")

查看当前指针位置

<code>print</code><code>(f.tell())</code>

<code>print</code><code>(f.readline())</code>

指针回到文件开头

<code>f.seek(</code><code>0</code><code>)</code>

<code>  </code><code>print</code><code>(f.tell())</code>

查看文件编码

<code>print</code><code>(f.encoding)</code>

做异常处理 f.errors

查看是不是一个终端设备

<code>print</code><code>(f.isatty())</code>

判断光标是否可以移动,可以True 否则False

<code>print</code><code>(f.seekable())</code>

判断文件是否可读

<code>print</code><code>(f.readable())</code>

判断文件是否可写

<code>print</code><code>(f.writable())</code>

强制刷新;用于实时将写的数据写到硬盘上;

<code>print</code><code>(f.flush())</code>

flush 事例进度条

<code>import</code> <code>sys,time</code>

<code>    </code><code>for</code> <code>i </code><code>in</code> <code>range</code><code>(</code><code>100</code><code>):</code>

<code>        </code><code>sys.stdout.write(</code><code>" "</code><code>)</code>

<code>  </code><code>for</code> <code>i </code><code>in</code> <code>range</code><code>(</code><code>100</code><code>):</code>

<code>      </code><code>sys.stdout.write(</code><code>" "</code><code>)</code>

<code>      </code><code>sys.stdout.flush()</code>

<code>      </code><code>time.sleep(</code><code>0.1</code><code>)</code>

判断文件是否关闭

<code>print</code><code>(f.closed)</code>

截断

<code>f </code><code>=</code> <code>open</code><code>(</code><code>"file"</code><code>,</code><code>"a"</code><code>,encoding</code><code>=</code><code>"utf-8"</code><code>)</code>

<code>  </code><code>f.truncate()             不加参数清空文件</code>

<code>  </code><code>f.truncate(</code><code>10</code><code>)           从文件开始截断</code><code>10</code><code>个字节</code>

文件读写模式打开(读和追加写)

<code>f </code><code>=</code> <code>open</code><code>(</code><code>"file"</code><code>,</code><code>"r+"</code><code>,encoding</code><code>=</code><code>"utf-8"</code><code>)</code>

<code>  </code><code>f.write(</code><code>"==============="</code><code>)</code>

文件写读模式打开(创建一个新文件写和读,然后在追加写。)

<code>f </code><code>=</code> <code>open</code><code>(</code><code>"file"</code><code>,</code><code>"w+"</code><code>,encoding</code><code>=</code><code>"utf-8"</code><code>)</code>

<code>  </code><code>f.write(</code><code>"===============\n"</code><code>)</code>

<code>  </code><code>print</code><code>(f.seek(</code><code>10</code><code>))</code>

<code>  </code><code>f.write(</code><code>"+++++++++++++++\n"</code><code>)</code>

文件追加读写模式打开(可以追加写和读)

<code>f </code><code>=</code> <code>open</code><code>(</code><code>"file"</code><code>,</code><code>"a+"</code><code>,encoding</code><code>=</code><code>"utf-8"</code><code>)</code>

文件二进制编码方式读;应用于网络传输

<code>f </code><code>=</code> <code>open</code><code>(</code><code>"file"</code><code>,</code><code>"rb"</code><code>)</code>

文件二进制编码方式写;应用于网络传输

<code>f </code><code>=</code> <code>open</code><code>(</code><code>"file"</code><code>,</code><code>"wb"</code><code>)</code>

<code>print</code><code>(f.write(</code><code>"hhhhhhh"</code><code>.encode()))       默认是utf</code><code>-</code><code>8</code><code>模式</code>

<code>f.close()</code>

文件二进制编码方式追加;应用于网络传输

<code>f </code><code>=</code> <code>open</code><code>(</code><code>"file"</code><code>,</code><code>"ab"</code><code>)</code>

文件修改

1.全部加载到内存里,重新写到文件里

2.修改后,写在另一个文件里

<code>f </code><code>=</code> <code>open</code><code>(</code><code>"file"</code><code>,</code><code>"r"</code><code>,encoding</code><code>=</code><code>"utf-8"</code><code>)</code>

<code>f2 </code><code>=</code> <code>open</code><code>(</code><code>"file2"</code><code>,</code><code>"w"</code><code>,encoding</code><code>=</code><code>"utf-8"</code><code>)</code>

<code>for</code> <code>i </code><code>in</code> <code>f:</code>

<code>    </code><code>if</code> <code>"2222"</code> <code>in</code> <code>i:</code>

<code>        </code><code>i </code><code>=</code> <code>i.replace(</code><code>"2222"</code><code>,</code><code>"BBBB"</code><code>)          </code><code>#i.replace替换功能</code>

<code>    </code><code>f2.write(i)</code>

<code>f2.close()</code>

文件操作自动关闭with

特点:自动关闭文件。

为了避免打开文件后忘记关闭,可以通过管理上下文。

<code>例如:with </code><code>open</code><code>(</code><code>"file"</code><code>,</code><code>"r"</code><code>)as f:</code>

<code>          </code><code>print</code><code>(f.readline())</code>

python2.7以后可以同时打开多个文件。

<code>with </code><code>open</code><code>(</code><code>"file"</code><code>,</code><code>"r"</code><code>) as f,\</code>

<code>      </code><code>open</code><code>(</code><code>"file2"</code><code>,</code><code>"r"</code><code>) as f2:</code>

<code>    </code><code>for</code> <code>i </code><code>in</code> <code>f:</code>

<code>        </code><code>print</code><code>(i.strip())</code>

<code>    </code><code>for</code> <code>i2 </code><code>in</code> <code>f2:</code>

<code>        </code><code>print</code><code>(i2.strip())</code>

(python官方要求:一行代码不要超过80个代码;)

     本文转自506554897 51CTO博客,原文链接:http://blog.51cto.com/506554897/1945833,如需转载请自行联系原作者