Python 12:Python 文件io操作模块

Python 文件io操作模块


介绍

IO操作是每种程序设计语言都会设计的模块,python的io操作设计的和C语言很类似,比较简便实用.

反观Java语言对于io操作设计的模块就比较抽象和灵活,这也导致java的io学习成本远比Python语言的io操作高很多。
但是java io框架的设计确实是非常优雅的,值得我们去学习其源码实现。

io操作通常指定就是输入和输出,通常载体为文件,即io操作也很多时候是文件的操作。

Python3.x文件IO操作

Python3.x进行文件读写的函数为open(filename,mode)

通过open
    f=open(filename,mode)

通过file(Python2.x存在该函数,3.x之后不存在了)
    f=file(filename,mode)

说实话Python3.x不兼容Python2.x对于学习来说确实是存在一点麻烦的

关于读写文件模式

'r'       open for reading (default)
'w'       open for writing, truncating the file first
'x'       create a new file and open it for writing
'a'       open for writing, appending to the end of the file if it exists
'b'       binary mode
't'       text mode (default)
'+'       open a disk file for updating (reading and writing)
'U'       universal newline mode (deprecated)

r : 以只读方式打开文件(默认)
w : 以写方式打开文件,可向文件中写入信息。如果文件存在,会清空文件,再写入新内容。
a : 以追加模式发开文件(如果文件不存在就先创建),文件一打开文件指针就会自动移动到文件末尾(这就是追加模式)
+ : 以读写方式打开文件
t : 以文本模式打开文件(默认)
b : 以二进制文件打开文件 

备注:常用的模式a+、r+、w+
需要注意的以这种模式打开时是否会覆盖原文件,所以通常操作文件时会先检查文件是否存在。

操作文件方法

Python操作文件方法比较少而且直观

f.close()           关闭文件,任何语言资源的操作都要记得及时关闭。
f.fileno()          获得文件描述符,是一个数字
f.flush()           刷新刷出缓存
f.read([count])     读出文件,如果有count,则读出count个字节。
f.readline()        读取一行信息
f.readlines()       读取所有行存放到一个列表容器中
f.tell()            获得文件指针位置
f.truncate([size])  截取文件,使文件的大小为size
f.write(string)     把string字符串写入到文件
f.writelines(list)  把list容器中的字符串一行行的写入到文件,连续写入没有换行。

文件拷贝应用

文本文件拷贝

def copy_text_file():
    f1=open("e:/usepython/io.txt","r")
    f2=open("e:/usepython/ioCopy.txt","w+")

    flag=True
    while flag:
        line=(f1.readline())    # 一行行读
        if len(line)>0:         # 只要有内容就写,没内容就跳出循环体
            f2.write(line)
        else:
            flag=False

    f1.close()                  # 资源操作都要最后都要关闭
    f2.close()

二进制文件拷贝

def copy_binary_file():

    # 关键点就在于打开文件方式
    f1=open("e:/usepython/2.jpg","rb+")         
    f2=open("e:/usepython/2Copy.jpg","wb+")

    flag=True
    while flag:
        line=(f1.readline())
        if len(line)>0:
            f2.write(line)
        else:
            flag=False

    f1.close()
    f2.close()


备注:我只想说Python IO操作确实非常简单方便。

总结

Python操作文件确实比较简单方便,通常要操作文件都会引入io模块和os模块(操作文件本身判断文件是否存在等方法)。我只想说这尼玛太屌了吧,当初学习Java io和nio可以说被整的死去活来啊,python就那么简单。

参考

1、http://www.ibiblio.org/swaroopch/byteofpython/read/io.html
2、https://docs.python.org/3/library/io.html

你可能感兴趣的:(Python入门系列,python)