18文件与目录

Posted 水之原

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

以上是关于18文件与目录的主要内容,如果未能解决你的问题,请参考以下文章

译文:18个实用的JavaScript代码片段,助你快速处理日常编程任务

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

带有片段的两个面板 UI 与单独的活动

18文件与目录

python常用代码片段总结