18、文件与目录
文件与目录
目标
- 文件的打开和创建
- 文件读取
- 文件写入
- 内容查找和替换
- 文件删除、复制、重命名
- 目录操作
案例
- 目录分析器
- 杀毒软件
- 系统垃圾清理工具
python文件读写
- python进行文件读写的函数是
open
或file
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)
-