1. 文件本身的操作(python内置)
• open() 打开或者创建一个文件
格式:open('文件路径','打开模式')
打开模式:r w a 等模式,这里聊聊常用的
r : 读取文件,若文件不存在则会报错
w: 写入文件,若文件不存在则会先创建再写入,会覆盖原文件
a : 写入文件,若文件不存在则会先创建再写入,但不会覆盖原文件,而是追加在文件末尾
rb,wb: 分别与r,w类似,但是用于读写二进制文件
r+ : 可读、可写,文件不存在也会报错,写操作时会覆盖
w+ : 可读,可写,文件不存在先创建,会覆盖
a+ : 可读、可写,文件不存在先创建,不会覆盖,追加在末尾
• close() 关闭文件
• read() 读取文件
• readline() 读取一行文件
• readlines() 将文件中的内容读取到序列当中。
• write() 写入文件
• writelines() 将序列写入文件中
演示代码:
# Python的文件操作
#1. 简单的文件信息读取
# 打开文件
f = open("./a.txt", "r") #IO文件流对象
# 读取文件内容并输出
content = f.read(5)
print(content)
content = f.read(5)
print(content)
content = f.read()
print(content)
# 关闭文件
f.close()
#2. readline() 读取一行
f = open("./a.txt", "r")
content = f.readline()
while len(content) > 0:
print(content, end="")
content = f.readline()
f.close()
print()
print("="*60)
#3. readlines() 一次性读取所有行
f = open("./a.txt", "r")
flist = f.readlines()
for line in flist:
print(line, end="")
f.close()
# 文件写入操作
f = open("./b.txt", "w")
f.write("Hello Python!\n")
f.write("Hello Jerry!\n")
a = ["Hello World!\n", "Hello HTML!\n", "Hello PHP!\n"]
f.writelines(a)
f.close()
# 自定义文件复制函数(边读边写)
def mycopy(file1, file2):
#打开文件源和目标文件
f1 = open(file1, "rb")
f2 = open(file2, "wb")
#循环读取并写入,实现复制内容
content = f1.readline()
while len(content) > 0:
f2.write(content)
content = f1.readline()
#关闭源和目标文件
f1.close()
f2.close()
#测试
mycopy("./a.jpg", "./b.jpg")
a.txt:五行文本
结果:
2. 系统中文件和文件夹的操作(os模块)
• 使用该模块必须先导入模块:
import os
• os模块中的部分函数:
• getcwd()-- 获取当前的工作目录
• chdir()-- 修改当前工作目录
• listdir()-- 获取指定文件夹中的
• mkdir() 创建一个目录/文件夹
• rmdir() 移除一个目录(必须是空目录)
• rename() 修改文件和文件夹的名称
• stat() 获取文件的相关 信息
• exit() 推出当前执行命令,直接关闭当前操作 格式:exit() 返回值:无
当前os模块的值:
• os.curdir 获取当前路径 都是.
• os.pardir 获取上层目录路径 都是..
• os.path os中的一个子模块,操作非常多
• os.name 当前系统的内核名称 win->nt linux/unix->posix
• os.sep 获取当前系统的路径分割符号 window -> \ linux/unix -> /
• os.extsep 获取当前系统中文件名和后缀之间的分割符号,所有系统都是.
• os.linesep 获取当前系统的换行符号 window -> \r\n linux/unix -> \n
实现文件夹复制
# 自定义一个目录复制的函数
import os
from file import mycopy
# 自定义目录复制函数
def copydd(dir1, dir2):
#获取被复制目录中的所有文件信息
dlist = os.listdir(dir1)
print(dlist)
#创建新目录
os.mkdir(dir2)
#遍历所有文件,并执行文件复制
for f in dlist:
#为遍历的文件添加目录路径
file1 = os.path.join(dir1, f) #源
file2 = os.path.join(dir2, f) #目标
#判断是否是文件
if os.path.isfile(file1):
mycopy(file1, file2) #调用自定义文件复制函数来复制文件
#判断是否是目录
if os.path.isdir(file1):
copydd(file1, file2) #递归调用自己,来实现子目录的复制
# 测试
copydd("./aa", "./dd")
结果:
3. 系统路径相关操作(os模块中的子模块 os.path)
• abspath() 将一个相对路径转化为绝对路径
• basename() 获取路径中的文件夹或者文件名称
• dirname() 获取路径中的路径部分(出去最后一部分)
• join() 将2个路径合成一个路径
• split() 将一个路径切割成文件夹和文件名部分
• splitext() 将一个文件名切成名字和后缀两个部分
• getsize() 获取一个文件的大小
• isfile() 检测一个路径是否是一个文件
• isdir() 检测一个路径是否是一个文件夹
• getctime() 获取文件的创建时间!
• getmtime() 获取文件的修改时间!
• getatime() 获取文件的访问时间!
• exists() 检测指定的路径是否存在
• isabs() 检测一个路径是否是绝对路径
• islink() 检测一个路径是否是链接
• samefile() 检测2个路径是否指向同一个文件