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('文件复制完成!')

  • 相关阅读:
    hbase
    spark-streaming
    spark-Scala
    经典台词二
    星爷电影经典台词一
    Hadoop第一阶段总结
    测试2
    POI 表格数据导出
    GC垃圾回收机制
    Java常见的200道面试题
  • 原文地址:https://www.cnblogs.com/abner-pan/p/11876663.html
Copyright © 2011-2022 走看看