目录
一、目录操作
二、获取文件的相关信息
1、演示获取文件的相关信息
2、注意事项和细节
一、目录操作
需求:
1)创建一级目录 d://aaa
2)创建多级目录 d://bbb//ccc
3)删除目录 d://aaa和d://bbb//ccc
import os
# 1)创建一级目录 d://aaa
# if os.path.isdir("d://aaa"):
# print("d://aaa目录已经存在...")
# else:
# os.mkdir("d://aaa")
# 2)创建多级目录 d://bbb//ccc
# if os.path.isdir("d://bbb//ccc"):
# print("d://bbb//ccc目录已经存在...")
# else:
# os.makedirs("d://bbb//ccc")
# 3)删除目录 d://aaa和d://bbb//ccc
# 删除单级目录使用rmdir,要求目录为空
# if os.path.isdir("d://aaa"):
# os.rmdir("d://aaa")
# else:
# print("d://aaa目录不存在,无法删除")
# 删除多级目录,使用removedirs,要求目录为空
if os.path.isdir("d://bbb//ccc"):
os.removedirs("d://bbb//ccc")
else:
print("d://bbb//ccc目录不存在,无法删除")
二、获取文件的相关信息
1、演示获取文件的相关信息
# 获取文件的相关信息(大小、创建时间、访问时间、修改时间等)
# 说明:time.ctime()方法的作用是将返回来的时间戳转为字符串格式
import os
import time
f_stat=os.stat("d:/a/abc.txt")
print("-----文件信息-----")
print(f"文件大小->{f_stat.st_size}")
print(f"最近的访问时间->{time.ctime(f_stat.st_atime)}")
print(f"最近的修改时间->{time.ctime(f_stat.st_mtime)}")
print(f"文件创建的时间->{time.ctime(f_stat.st_ctime)}")
2、注意事项和细节
1)f.flush():刷新流的写入缓冲区到文件
"""
1、调用f.wirte()时,内容并没有真正写入到文件,而是先积攒到缓冲区
2、当调用flush()时,内容会真正写入到文件
3、这样是为了避免频繁的操作硬盘,导致效率低
(积攒到一定量的数据,一次性写入文件,提高效率)
"""
# f.flush():刷新流的写入缓冲区
import time
f=open("d://a//hi.txt","w",encoding="utf-8")
f.write("你好1,python~\n")
f.write("你好2,python~\n")
f.write("你好3,python~\n")
# 测试f.flush()将缓冲区数据刷新,写入文件
f.flush()
print("-----等待-----")
time.sleep(10)
print("-----等待 end-----")
2)f.close():刷新并关闭此流,也就是f.close()内置的flush功能
3)with open() as f:在处理文件对象时,子句体结束后,文件会自动关闭
# with open() as f:
# 在处理文件对象时,子句体结束后,文件会自动关闭
with open("d://a//hello.txt","r",encoding="utf-8") as f:
lines=f.readlines()
print("----文件内容----")
for line in lines:
print(line,end="")
print("\n文件是否关闭->",f.closed)
4)关于目录分隔符号,在windows下 "/ " 和 "//" 都可以,比如如"d://aaa//bbb//hi.txt"和"d:/aaa/bbb/hi.txt",linux/unix是"/",比如 /root/home/aa.log 因此建议目录分隔符,为了兼容,linux和windows都使用"/"