Python文件操作

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个路径是否指向同一个文件

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jerry_ww

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值