18、文件与目录

文件与目录

目标

  • 文件的打开和创建
  • 文件读取
  • 文件写入
  • 内容查找和替换
  • 文件删除、复制、重命名
  • 目录操作

案例

  • 目录分析器
  • 杀毒软件
  • 系统垃圾清理工具

python文件读写

  • python进行文件读写的函数是openfile
  • file_handle = open(filename, mode)
模式 说明
r 只读
r+ 读写
w 写入,先删除原文件,在重新写入,如果文件没有则创建
w+ 读写,先删除原文件,在重新写入,如果文件没有则创建(可以写入输出)
a 写入,在文件末尾追加新的内容,文件不存在,创建之
a+ 读写,在文件末尾追加新的内容,文件不存在,创建之
b 打开二进制文件。可以与r、w、a、+结合使用
U 支持所有的换行符号。"\r"、"\n"、"\r\n"

文件对象方法

  • close

    • 格式
      • FileObject.close()
    • 说明
      • 关闭文件,关闭前,会将缓存中的数据先写入文件。
  • readline

    • 格式
      • String = FileObject.readline([size])
    • 说明
      • 每次读取文件的一行
      • size:是指每行每次读取size个字节,直到行的末尾
  • readlines

    • 格式
      • List = FileObject.readlines([size])
    • 说明
      • 多行读,返回一个列表
      • size: 每次读入size个字符,然后继续按size读,而不是每次读入行的size个字符
  • read

    • 格式
      • String = FileObject.read([size])
    • 说明
      • 读出文件的所有内容,并复制给一个字符串
      • size: 读出文件的前[size]个字符,并输出给字符串,此时文件的指针指向size处
  • next

    • 格式
      • FileObject.next()
    • 说明
      • 返回当前行,并将文件指针到下一行
  • write

    • 格式
      • FileObject.write(string)
    • 说明
      • write和后面的writelines在写入前会是否清除文件中原来所有的数据,在重新写入新的内容,取决于打开文件的模式
  • writelines

    • 格式
      • FileObject.writelines(List)
    • 说明
      • 多行写
      • 效率比write高,速度更快,少量写入可以使用write
  • seek

    • 格式
      • FileObject.seek(偏移量,选项)
    • 说明
      • 选项=0时,表示将文件指针指向从文件头部到“偏移量”字节处。
      • 选项=1时,表示将文件指针指向从文件的当前位置,向向移动“偏移量”字节。
      • 选项=2时,表示将文件指针指向从文件的尾部,向前移动“偏移量”字节。
  • flush

    • 格式
      • FileObject.flush()
    • 说明
      • 提交更新

文件查找和替换

  • 文件查找

  • cat a.txt

      hello world
      hello hello world
    
  • 统计文件中hello的个数

      import re
    
      fp = file("a.txt", "r")
      count = 0
      for s in fp.readlines():
          li = re.findall("hello", s)
          if len(li) > 0:
              count = count + len(li)
    
      print "Search ",count," hello"
      fp.close()
    
  • 文件内容替换

  • 问题:把a.txt中的hello替换为good, 并保存结果到b.txt中

  • 示例代码一:

      fp1 = file("a.txt", "r")
      fp2 = file("b.txt", "w")
    
      for s in fp1.readlines():
          fp2.write(s.replace("hello", "good"))
    
      fp1.close()
      fp2.close()
    
  • 示例代码二:

      fp1 = file("a.txt", "r")
      fp2 = file("b.txt", "w")
      
      s = fp1.read()
      fp2.write(s.replace("hello", "good"))
    
      fp1.close()
      fp2.close()
    

目录操作

  • 目录操作就是通过python来实现目录的创建,修改,遍历等功能

  • import os

    • 目录操作需要调用os模块
    • 比如os.mkdir('/root/demo')
  • 常用函数

函数 说明
mkdir(path[,mode=0777]) 创建单个目录
makedirs(name,mode=511) 创建多层级目录
rmdir(path) 删除单个目录
removedirs(path) 删除多层级目录
listdir(path) 列出目录
getcwd() 取得当前目录
chdir(path) 切换目录
walk(top, topdown=True, onerror=None)
  • 案例

    • 系统垃圾清除小工具
  • 方式

    • 递归函数
    • os.walk()函数
      • 函数声明:os.walk(path)

      • 该函数返回一个元组,该元组有3个元素,这3个元素分别表示每次遍历的路径名,目录列表和文件列表。

          for path, dirlist, filelist in os.walk('.'):
              for filename in filelist:
                  print os.path.join(path, filename)
        
posted @ 2018-01-01 21:26  水之原  阅读(213)  评论(0编辑  收藏  举报