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)    # 每次都会将原文件的内容清空,然后再写当前的内容,没有换行效果,如需要,自己添加\n

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

 

追加文件操作:

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

  stream.write(s) 

 

释放(管道)资源

  stream.close()

 

标准的一次文件操作:

  开始:open()

  结束:close() 

 

文件的复制:

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

  '''

  原文件:c:\old.jpg

  目标文件:c:\new.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('文件复制完成!')

 

posted @ 2019-11-17 15:22  abner_pan  阅读(174)  评论(0编辑  收藏  举报