python学习11 -文件,流

打开文件

  语法如下:open(name,[module[,buffering]]) ,模式 和缓冲参数都是可选的  

f = open(r'C:\TEXT\somefile.txt')
#如果文件不存在

Traceback (most recent call last):
File "<pyshell#64>", line 1, in <module>
f = open(r'C:\TEXT\somefile.txt')
IOError: [Errno 2] No such file or directory: 'C:\\TEXT\\somefile.txt'

   module  参数常用值

'r' 读模式
'w' 写模式
'a' 追加模式
'b' 二进制模式(可添加到其他模式中使用)
'+' 读/写模式(可添加到其他模式中使用)

 

 

 

 

 

  

缓冲

    open  函数的第3个参数(可选)控制着文件的缓冲。

    0 : 无缓冲,所有读写操作直接针对硬盘

    1 : 有缓冲,用内存替代硬盘、

 

基本文件方法

  读和写 :文件(或流)最重要的方法就是提供或者接受数据。

>>> f = open(r'D:\a.txt','w')
>>> f.write('hello')
>>> f.write('world')
>>> f.close()
>>> f = open(r'D:\a.txt','r')  # 'r' 可以省略
>>> f.read(4)
'hell'
>>> f.read()
'oworld'

  读写行

    file.readline([n])  -从当前位置开始,直到一个换行符的出现(或者读取最多 N个字符 字符)

    file.readlines()  --读取一个文件的所有行

    writelines()  --给他一个字符串列表(可迭代的对象),他会把所有字符串写入文件,需要自己添加新行

  关闭文件

    close()  --关闭文件

    可以使用 try finally 中使用 close()

    也可以使用 

     with oepn(sdfsadfasdf) as f:

  使用文件的基本方法

    read([n]),readline([n]),readlines(),write(),writelines()  --不做详细的解释了

 

对文件内容进行迭代

  按字节进行处理

f = open(filename)
while char:
    char = f.read(1)
    if not char:break
    process(char)  # 处理字符串
f.close()

  按行操作

f = open(filename)
while char:
    line= f.readline()
    if not line:break
    process(char)  # 处理行
f.close()

  读取所有内容

    如果文件不够太大,则可以用 read() 或者readlines()

  使用fileinput 实现懒惰迭代

    如果文件足够大,则不能用readlines,则适合用 for 循环 和 readline() 方法,也可以使用fileinput

import fileinput
for line in fileinput.input(filename):
    process(line)  #对行进行处理

  文件迭代器

    在python近几个版本中,文件对象是可迭代的,这就意味着可以直接在for 循环中使用它们,从而对它们进行迭代

f = open(filename)
for line in f:
    process(line)
f.close()

    ps:sys.stdin  注意该用法!

    

 

    

    

  

posted @ 2017-03-29 21:15  大愚者  阅读(190)  评论(0编辑  收藏  举报