目录操作
OS模块
基本使用
import os
# 查看操作系统类型
# nt:表示windows,posix:表示类unix
# print(os.name)
# 可以执行系统命令
# calc:可以弹出计算器
# os.system('calc')
# 获取环境变量
env = os.environ
# for e in env:
# print(e, env[e])
# print(os.environ['PATH'])
# print(os.environ.get('xxx', '默认值'))
# 上面的简化形式
# print(os.getenv('XXX', '默认值'))
print(os.getenv('test'))
环境变量
windows:
设置:set 变量名=变量值
获取:set 变量名
目录表示
相对目录:有参考的目录
.表示当前目录,./通常可以省略
…表示上一级目录,上上一级…/…/
绝对目录
windos:凡是以盘符开头的目录
如:C:\Program Files\Python36\Lib
类unix:以/开头的目录
目录分隔符
windows:\ 或/都可以
类unix:只能这样/
建议:统一使用/
目录操作
示例:
import os
# 查看当前工作目录
# print(os.getcwd())
# 创建目录:不可以创建中间目录
# os.mkdir('test')
# os.mkdir('abc/def')
# 创建目录:可以创建中间目录
# os.makedirs('abc/def')
# 删除目录:只能删除空目录
# os.rmdir('test')
# 删除文件
# os.remove('01-text.txt')
# 修改名字:文件和目录都可以
# os.rename('test', 'hello')
# os.rename('00-test.txt', '01-text.txt')
# 查看目录内容
# print(os.listdir('.'))
# 查看文件状态:文件和目录都可以
stat = os.stat('.')
# 获取大小:对于文件没有问题,对于目录有问题
print(stat.st_size)
```python
path
from os import path
# 路径拼接:目录分隔符会自动处理
print(path.join('abc/def/', 'hello.py'))
# 结果:abc/def/hello.py
# 提取目录
print(path.dirname('abc/def/hello.py'))
# 结果 abc/def
# 提取文件名
print(path.basename('abc/def/hello.py'))
# 切割目录名与文件名
dir_name, file_name = path.split('abc/def/hello.py')
print(dir_name, file_name)
# 切割文件名与后缀
print(path.splitext('abc/def/hello.py'))
# 判断文件是否存在
print(path.exists('xxx'))
# 判断是否是普通文件
print(path.isfile('hello'))
# 判断是否是目录文件
print(path.isdir('hello'))
# 判断是否是绝对目录
print(path.isabs('hello'))
# 转换为绝对目录
print(path.abspath('hello'))
# 获取文件大小:普通文件可以,目录文件有问题
print(path.getsize('hello/123.py'))
深度遍历目录
示例:
import os
# 深度遍历目录
def shengdu(dir_name):
if not os.path.isdir(dir_name):
print(dir_name, '不是目录,无法遍历')
return
# 转换为绝对目录
dir_name = os.path.abspath(dir_name)
files = os.listdir(dir_name)
for f in files:
# 拼接完整目录
file_name = os.path.join(dir_name, f)
print(file_name)
if os.path.isdir(file_name):
shengdu(file_name)
shengdu('../../')