1、文件操作
- open()函数
- fileinput操作文件
(1)、open()函数
使用open()函数打开文件,并使用相关的读/写文件的内容供程序处理和使用,而文件也可以看做Python中的一种数据类型。
open()函数原型如下:
- open(file, mode=’r’, buffering=’-1’, encoding=None, errors=None, newline=None, closefd=True, opener=None)
open()函数参数说明如下:
filename | 要打开的文件名 |
---|---|
mode | 可选参数,文件打开模式 |
bufsize | 可选参数,缓冲区大小 |
encoding | 文件编码类型 |
errors | 编码错误处理方法 |
newline | 控制通过换行符模式的行为 |
closefd | 控制在关闭文件时是否彻底关闭文件 |
mode是打开文件的操作模式字符串,常见的模式字符串如下:
模式字符 | 表示的操作 |
---|---|
r | 只读(r) |
w | 只写,会清除文件内容 |
a | 附加数据 |
b | 二进制数据模式 |
x | 新建一个文件,可写 |
+ | 打开文件直接更新 |
t | 文本模式(默认) |
常用的文件操作及其作用描述如下:
文件操作 | 功能描述 |
---|---|
file.read([n]) | 将整个文件读入字符串中,或指定n个字节 |
file.readline([n]) | 读入文件的一行到字符串中 |
file.readlines() | 将整个文件按行读入到列表中 |
file.write(s) | 向文件中写入字符串 |
file.writelines(lines) | 向文件中写入一个行数据列表 |
file.close() | 关闭打开的文件 |
文件读写示例:
①使用for循环读写
file = open('G:\\work\\python\\ClassTest.py', encoding='utf-8')
for line in file.readlines():
print(line, end='')
file.close()
②使用while循环读写
file = open('G:\\work\\python\\ClassTest.py', encoding='utf-8')
while True:
line = file.readline()
if not line:
break;
print(line, end='')
file.close()
③使用with语句读写
with file as f:
for lines in f:
print(lines, end='')
(2)、fileinput操作文件
fileinput模块提供了一个以行模式循环处理一个或多个文件内容;它实现了对文件中的行的懒惰迭代,读取时不需要把文件内容放入内存,这样提高程序效率;
fileinput模块常用的函数有:
- input(): 返回用于迭代一个或多个文件中所有行对象;
- filename(): 返回当前文件的名称;
- lineno(): 返回当前读取行的数量;
- isfirstline():返回当前行是否文件的第一行;
- filelineno(): 返回当前读取行在文件的行数。
2、常用的文件和目录操作
(1)、获取当前路径
import os
os.getcwd()
(2)、获取目录中的内容
import os
os.listdir(path)
(3)、创建目录
import os
os.mkdir(path)
(4)、删除目录
import os
os.rmdir(path)
(5)、判断是否为目录或文件
import os
os.path.isdir(path)
ps.path.isfile(path)
(6)、遍历目录下的所有文件和目录
import os
os.walk(path)
for i in os.walk('.\\'):
print(i)
os.walk()返回多个元组;第一项为遍历的目录名,第二项为遍历的子目录列表,第三项为遍历的所有文件列表
运行结果:
(‘G:\work\python’, [‘01Python爬虫基础’, ‘bao’, ‘pycache‘, ‘文章’], [‘ClassTest.py’, ‘compilePy.py’, ‘ExpectTest.py’, ‘Html.html’, ‘ItorTest.py’, ‘lambdaTest.py’, ‘MyPyModel.py’, ‘MyTestPy.py’, ‘MyTestPy.pyc’, ‘PrintTest.py’, ‘py10.py’, ‘PythonClassTest.py’, ‘PythonEmail.py’, ‘PythonImport.py’, ‘Test.py’, ‘Test20180222.py’])
(‘G:\work\python\01Python爬虫基础’, [], [‘baiduHtmlGet.py’, ‘BaiduIndex.html’, ‘BaiduSearchHtmlIndex.html’, ‘BaiduSearchIndex.py’, ‘postTest.py’, ‘PostTestIndex.html’, ‘qbHtmlIndex.html’, ‘qbHtmlIndexGet.py’, ‘配套资料下载地址.jpg’, ‘零基础快速入门Python网络爬虫.ppt’])
(‘G:\work\python\bao’, [‘pycache‘], [‘MyPyModel.py’, ‘init.py’])
(‘G:\work\python\bao\__pycache__’, [], [‘MyPyModel.cpython-36.pyc’, ‘init.cpython-36.pyc’])
(‘G:\work\python\__pycache__’, [], [‘ClassTest.cpython-36.pyc’, ‘MyPyModel.cpython-36.pyc’])
(‘G:\work\python\文章’, [], [‘Python进阶.md’, ‘包.md’, ‘异常.md’, ‘模块.md’, ‘生成器.md’, ‘迭代器.md’])