美文网首页
python ->函数->文件IO(面向对象)

python ->函数->文件IO(面向对象)

作者: 也是如此 | 来源:发表于2018-07-23 20:43 被阅读20次

    1 IO

    (1)系统中的文件,都是二进制文件,机器才能识别并执行操作
    操作系统中的文件:
    文本文件:记事本打开不会出现乱码的文件
    二进制文件:记事本打开会出现乱码的现象
    (2)在python中操作系统文件
    import os
    1.创建文件夹:创建如下文件夹:d:/oswork/demo01.txt

    #创建文件夹:os.makedirs()(创建多个级联的文件夹)/mkdir(创建一个文件夹)
    import os
    #创建文件夹
    os.mkdir("d:/os_work")
    
    #创建文件
    open("d:/os_work/demo01.txt","x")
    

    2.重命名一个文件

    import os
    
    os.rename("d:/oswork/demo01.txt","d:/oswork/demo01.py")
    

    3.删除一个文件

    import os
    
    os.remove("d:/oswork/demo01.py")
    

    4.查看某个文件夹下所有文件

    import  os
    #查看某个文件夹下的所有文件
    #f_list = os.listdir("D:/360驱动大师目录")
    #print(f_list)
    
    
    def check_files(s_path)
        if os.path.isfile(s_path):
            print("这是一个文件夹:",s_path)
        if os.path.isdir(s_path):
            print("这是一个文件夹:",s_path)
            f_list = os.listdir(s_path)
            for file in f_list:
                check_flies(s_path + "/" + file)
    check_files("d:/360驱动大师目录")
    

    2 os

    可以直接操作系统文件
    创建文件
    删除文件
    重命名文件
    查询文件信息|遍历文件

    1.操作系统中的文本文件,内容
    文本文件的内容:文件内容
    写入文件--写入指定内容->是否追加(不追加,每次写入数据时覆盖原有数据)
    读取文件-读取文件中的内容
    打开文件
    open(file, mode='r', buffering=-1, encoding=None,errors=None, newline=None, closefd=True, opener=None)
    参数列表:
    file:要操作的文件对象,或者文件名称(路径【相对路径|绝对路径】)
    mode:操作方式
    t:text 默认操作,文本文件
    b:binary 操作二进制文件
    a:append 追加操作文件
    w:write 向文件中写入内容
    r:read: 从文件中读取内容
    +:打开一个文件即可以写入数据也可以读取数据

    案例开发:

    #操作文本数据,读取数据
    #打开文件
    f = open("D:/测试文件、test1/data.txt")
    #读取文件
    c = f.read()
    #展示文件
    print(c)
    #关闭文件
    f.close()
    

    向文件中写入数据
    打开文件->定义数据->写入数据->关闭文件

    import os 
    #coding utf-8
    #打开文件
    #mode = "w":写入数据时,会清空原有数据,mode = "a":追加数据
    f = open("data.txt",mode = "a")
    #定义数据
    a = "你好"
    #写入数据
    f.write(a)
    #关闭文件
    f.close()
    

    文件拷贝
    1 确定源文件
    2 确定目标文件
    3 拷贝

    def  copy_file(src,dst):
        #拷贝文件中的函数,src:源文件  dst:目标文件
        #二进制的话 “r”,“w”为“rb”,"wb"
        #打开源文件和目标文件
        a = open(src,"r")
        b = open(dst,"w")
        #拷贝
        concent = a.read()
        b.write(concent)
        #关闭
        a.close()
        b.close()
    #测试是否成功
    copy_file("data.txt","data[文件备份].txt")
    

    二进制文件拷贝以及存在的问题
    文本文件拷贝时不会有太大问题,文本文件一般不会很大
    拷贝时,是一次拷贝选中的一个文件,存入缓存,一旦文件过大,电脑缓存将会不够,造成内存溢出,因此需要限制一次拷贝的大小,分多次拷贝完成

    def copy_file(src,dst):
        #打开文件
        s = open(src,"rb")
        d = open(dst,"wb")
        #原始操作方式
        #concent = s.read()
        #d.write(concent)
    
        #实现大体积数据的拷贝时
        #限制一次只能读取1024字节
        buff = 1024
        concent = s.read(buff)  #第一次读取数据
        
        #开始循环操作
        while concent:
            d.write(concent)
            concent = s.read(buff)
        
    #关闭
        d.close()
        s.close()
    
    src = "d:/video/study.mp4"
    dst = "e:/one.mp4"
    copy_file(src,dst)
    

    with的操作
    with语句:是python提供用来快捷操作文件的一种语法结构,主要简化了文件在操作过程中,由于各种失误或者异常造成的文件错误关闭,二衍生出来的一种操作方式

    with语法结构:
    with open(要打开的文件,操作模式)as 文件存储的变量:
    通过变量操作文件

    #尝龟操作
    #f = open("data.txt","w")
    with open("data.txt","w") as f:
        f.write("hello with!")
     #二进制文件,自动打开,操作,关闭
    with.open("movie.jpg","rb") as f:
        f.read()
        print(f)
    
    #简化文件复制操作
    def copy_file(src,dst):
        #快捷操作方式:打开文件src
        with open(src,"rb") as s:
            #文件复制
            buff = 1024
            content = s.read(buff)
    
            while concent:
                  d.write(concent)
                    concent = s.read(buff)
    

    相关文章

      网友评论

          本文标题:python ->函数->文件IO(面向对象)

          本文链接:https://www.haomeiwen.com/subject/lrzjmftx.html