您的位置:首页 > 编程语言 > Python开发

【python学习笔记】pthon3.x中的文件读写操作

2014-09-15 17:00 981 查看
  在学习python文件读写的时候,因为教程是针对python2的,而使用的是python3。想要利用file类时,类库里找不到,重装了python2还是使不了。在别人园子认真拜读了《详解python2和python3区别》(已收藏)之后,才发现python3已经去掉file类。

  现在利用python进行文件读写的方法更加类似于C语言的文件读写操作。

  如今总结如下:

  一 打开文件—— f = open('poem.txt','x+'):

    读过open的帮助文档,然后自己翻译了一下,现给大家分享一些摘抄注释:

    1 open(...)的作用:打开文件并返回一个数据流。打开出错则返回IOError。

    2 打开文件的方法:可通过文件名(如果不在当前目录下,则提供路径)来打开文本或比特流(即文件)或者包装一个整型文件描述符(??英文是integer file descriptor,存疑)。

    3 打开文件的模式:默认打开文件的方式是'rt'

    字母    含义
--------- ---------------------------------------------------------------
'r' 只读模式打开 (默认模式)
'w' 只写模式打开,首先截断文件(??什么是截断文件?存疑。)
'x' 新建文件并打开(如果文件已经存在,则产生一个FileExistsError错误)
'a' 读文件,如果文件存在,在文件尾进行追加
'b' 二进制读写模式
't' 文本读写模式(默认)
'+' 打开一个磁盘文件用于更新 (进行读写操作)
'U' 通用换行模式 (不赞成使用,newline的值可以是None, '', '\n', '\r', 和 '\r\n')
========= ===============================================================

    4 open(...)使用方法:

    file = open(file, mode='r', buffering=-1, encoding=None,errors=None, newline=None, closefd=True, opener=None)

    (后六个参数可选)

 

  二 关闭文件—— f.close( )

    

  使用open打开文件后一定要记得调用文件对象的close()方法。

  可以直接调用close()关闭文件。

  也可以用try/finally语句来确保最后能关闭文件。(参考资料:http://jingyan.baidu.com/article/aa6a2c14d54f7f0d4c19c487.html

  注:不能把open语句放在try块里,因为当打开文件出现异常时,文件对象file_object无法执行close()方法。

  

    三 读文件—— file.read(size)

    1 file.read(n) 指定参数,读取从当前位置之后n个字符或字节
    2 file.read() 不指定参数,读取整个文件

    3 file.readline() 读取一行字符串,这个字符串是以一个行结束符'\n'为结束的,如果它返回了一个空字符串,说明已经到了文件的结尾,如果返回一个'\n',则说明是一个空行。

    4 file.readlines() 读取文件中的每一行,每行字符组成一个字符串。如果要读取文件的所有行,则可以使用list(f)函数或者f.readlines()。

    

   四 写文件——file.write()

    file.write(string)会将string的内容写入到文件中,返回一个数值,是写入的字符的个数。如果要把其他对象写入到文件中,要先将其转换为字符串。

    五 文件读取指针的位置

    

    file.tell()会返回当前文件读写指针的位置,如果是用二进制打开的,则这个位置表示从文件头开始到当前位置的字节数,如果是在文本模式,则这个位置的含义就比较模糊了。

    为了改变文件的读写指针的位置,可以使用file.seek(offset,from_what)函数,这个函数会从某个位置加上offset值。from_what值有三个,0表示从文件头开始,1表示从当前位置开始,2表示从文件末尾开始。默认值是0.

    参考资料:/article/4666258.html

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: