import os
"""目录操作"""
os.makedirs("a/b/c") # 创建多级目录(推荐使用)
os.removedirs("a/b/c") # 删除多级目录(不推荐使用)
os.mkdir("aa") # 创建一级目录
os.rmdir("aa") # 删除一层目录
os.listdir("./") # 列出指定目录下的文件和文件夹
os.getcwd() # 获取当前工作目录
os.chdir("aaa") # 切换工作目录
os.chdir("../")
os.path.join("a", "b") # 路径拼接 'a\b'
os.path.basename("a/b/c") # 返回最后一个/后面的内容 'c'
os.path.basename("a/b/c.txt") # 返回最后一个/后面的内容 'c.txt'
os.path.dirname("a/b/c") # 返回除最后一个/后面内容外的部分 'a/b'
os.path.dirname(os.path.dirname("a/b/c")) # 'a'
os.path.split("a/b/c") # 路径分隔('a/b', 'c')
import os
"""文件操作"""
open("a.txt", "w", encoding="utf-8").close() # 创建一个空文件
os.rename("a.txt", "a-new.txt") # 文件重命名
os.remove("a-new.txt") # 删除文件
os.path.exists("a.txt") # 判断文件或目录是否存在
os.path.isfile("a.txt") # 判断是否是文件
os.path.isdir("a.txt") # 判断是否是目录
os.path.isabs("a.txt") # 判断是否是绝对路径
os.path.abspath("a.txt") # 文件的绝对路径 'G:\python28\code\day05\整理笔记\a.txt'
os.path.getatime("b.txt") # 文件最后访问的时间戳
os.path.getctime("b.txt") # 文件最后修改的时间戳
os.path.getsize("b.txt") # 文件大小,单位字节
os.stat("b.txt") # 文件信息
os.stat_result(st_mode=33206, st_ino=14636698789298201, st_dev=2049124156, st_nlink=1, st_uid=0, st_gid=0, st_size=33, st_atime=1574923631, st_mtime=1574923730, st_ctime=1574923631)
import os
os.system("dir") # 执行命令,无返回值
os.popen("dir").read() # 执行命令,有返回值
os.sep # 系统分隔符 '\'
import os
def list_dir(path):
"""
遍历目录下所有的文件
"""
lst = os.listdir(path)
for name in lst:
file_path = os.path.join(path, name)
if os.path.isdir(file_path):
list_dir(file_path)
else:
print(file_path)
list_dir("./")
./.ipynb_checkpoints整理笔记-checkpoint.ipynb
./.ipynb_checkpoints练习题-checkpoint.ipynb
./aaa1.txt
./aaa2.txt
./aaabba1.txt
./aaabba2.txt
./abca111.txt
./b.txt
./安装包.exe
./整理笔记.ipynb
./练习题.ipynb
import os
def list_dir(path, layer):
"""
遍历目录下所有的文件和目录
"""
lst = os.listdir(path)
for name in lst:
file_path = os.path.join(path, name)
if os.path.isdir(file_path):
print((layer-1)*" " + name)
list_dir(file_path, layer+1)
else:
print((layer-1)*" " + name)
list_dir("./", 1)
.ipynb_checkpoints
整理笔记-checkpoint.ipynb
练习题-checkpoint.ipynb
88
aaa
1.txt
2.txt
bbb
a1.txt
a2.txt
abc
a111.txt
b.txt
安装包.exe
整理笔记.ipynb
练习题.ipynb
import os
def unit_convert(size):
"""
字节、KB、MB、GB单位转换
"""
if size > 1024*1024*1024:
return format(size/1024/1024/1024, ".2f")+"GB"
elif size > 1024*1024:
return format(size/1024/1024, ".2f")+"MB"
elif size > 1024:
return format(size/1024, ".2f")+"KB"
else:
return str(size)+"B"
def getPathSize(path):
"""
统计目录的总大小
"""
total_size = 0
def get_size(path):
nonlocal total_size
lst = os.listdir(path)
for name in lst:
file_path = os.path.join(path, name)
if os.path.isdir(file_path):
total_size += os.path.getsize(file_path)
print(file_path)
get_size(file_path)
else:
print(file_path)
total_size += os.path.getsize(file_path)
return total_size
return get_size(path)
print(unit_convert(getPathSize("./")))
./.ipynb_checkpoints
./.ipynb_checkpoints整理笔记-checkpoint.ipynb
./.ipynb_checkpoints练习题-checkpoint.ipynb
./88
./aaa
./aaa1.txt
./aaa2.txt
./aaabb
./aaabba1.txt
./aaabba2.txt
./abc
./abca111.txt
./b.txt
./安装包.exe
./整理笔记.ipynb
./练习题.ipynb
29.95KB
import os
os.walk("./") # 返回一个生成器
print(list(os.walk("./"))) # [root, [文件夹1,文件夹2...], [文件1,文件2...]]
[('./', ['.ipynb_checkpoints', '88', 'aaa', 'abc'], ['b.txt', '安装包.exe', '整理笔记.ipynb', '练习题.ipynb']), ('./.ipynb_checkpoints', [], ['整理笔记-checkpoint.ipynb', '练习题-checkpoint.ipynb']), ('./88', [], []), ('./aaa', ['bbb'], ['1.txt', '2.txt']), ('./aaa\bbb', [], ['a1.txt', 'a2.txt']), ('./abc', [], ['a111.txt'])]
import os
def getPathSize(path):
"""
统计目录的总大小
"""
total_size = 0
gen = os.walk(path) # 拿到一个生成器
for root, dirs, files in gen:
for d in dirs:
dir_path = os.path.join(root, d)
total_size += os.path.getsize(dir_path)
print(dir_path)
for f in files:
file_path = os.path.join(root, f)
total_size += os.path.getsize(file_path)
print(file_path)
return total_size
print(unit_convert(getPathSize("./")))
./.ipynb_checkpoints
./88
./aaa
./abc
./b.txt
./安装包.exe
./整理笔记.ipynb
./练习题.ipynb
./.ipynb_checkpoints整理笔记-checkpoint.ipynb
./.ipynb_checkpoints练习题-checkpoint.ipynb
./aaabb
./aaa1.txt
./aaa2.txt
./aaabba1.txt
./aaabba2.txt
./abca111.txt
30.05KB