zoukankan      html  css  js  c++  java
  • python--->文件操作

    应用:

      1.文件上传

      2.保存log

    系统函数:

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

      file:文件名

      mode:默认‘r’

        常用模式如下:

        r:read 读 --------->纯文本文件

        w:write 写--------->纯文本文件

        b:binary 二进制,字节

        rb:read binary--------->纯文本/图片/音乐/影像

        wb:write binary--------->纯文本/图片/音乐/影像

      buffering:缓存,类似运行内存,越大速度越快

    工作原理分析:

    文件上传:(读)电影上传(写)到网盘

    文件下载:从(读)网盘上下载(写)到我的硬盘上

    文档说明:

      在函数中打一个三引号 "" "",会默认产生两个值,如下:

      :param n:   # 说明参数n是干嘛的
      :return: # 有没有返回值

    读文件操作:

      stream = open(path/filename,'r')  # 返回值:stream(管道)

      stream.read()          # 读取管道中全部内容

      stream.readable()        # 判断是否可以读取 返回值:True/False

      stream.readline()      # 读取一行内容

      stream.readlines()       # 读取多行,并返回在列表中

    注意:

    1.如果传递的path/filename有误,则会报错:FileNotFoundError

    2.如果是图片则不能使用默认的读取方式,mode需要改为'rb'

    写文件操作:

      stream = open(path/filename,'w')  # 返回值:stream(管道)

      stream.write(s)    # 每次都会将原文件的内容清空,然后再写当前的内容,没有换行效果,如需要,自己添加

      stream.writelines(Iterable)   # 可迭代的,没有换行效果,如需要,自己添加

    追加文件操作:

      stream = open(path/filename,'a')  # 模式'a',不会清空原来文件的内容,再原来基础上追加内容,相同于append效果

      stream.write(s) 

    释放(管道)资源

      stream.close()

    标准的一次文件操作:

      开始:open()

      结束:close() 

    文件的复制:

    1.在同目录下复制文件:

      '''

      原文件:c:old.jpg

      目标文件:c: ew.jpg

      with结果open使用,可以帮助我们自动释放资源

      '''

      with open(r'c:old.jpg','rb') as rstream:   # 等同于 stream = open(r'c:old.jpg','rb')

        container = rstream.read()    # 读取文件内容

      with open(r'c:new.jpg','wb') as wstream:

        wstream.write(container)

      print("文件复制完成!")

    2.将其他目录的文件复制到当前目录下:

    思路:1.进入要复制的目录

       2.读取原文件内容

       3.获取当前目录路径以及原原文件的名字

         4.拼接新文件路径

       5.写入文件

      import os

      with open(oldpath/filename,'rb') as rstream:

        container = rstream.read()    # 读取原文件内容

      # 获取当前目录路径(绝对路径)

      nowpath = os.path.dirname(__file__)

      # 获取原文件的名字

      oldfilepath = restream.name

      oldfilename = oldfilepath[oldfilepath.rfind('\')+1:]

      # 拼接新文件路径

      newfilepath = os.path.join(nowpath,oldfilename)

      # 写入文件

      with open(newfilepath,'wb') as wstream:

        wstream.write(container)

      print('文件复制完成!')

  • 相关阅读:
    Qt计算器开发(三):执行效果及项目总结
    [HNOI2019]校园旅行
    How to fix nuget Unrecognized license type MIT when pack
    How to fix nuget Unrecognized license type MIT when pack
    git 通过 SublimeMerge 处理冲突
    git 通过 SublimeMerge 处理冲突
    git 上传当前分支
    git 上传当前分支
    gif 格式
    gif 格式
  • 原文地址:https://www.cnblogs.com/abner-pan/p/11876663.html
Copyright © 2011-2022 走看看