Python3 目录操作
常见的目录操作:
- 显示当前目录
- 切换目录
- 新建、删除目录、移动、复制
- 显示目录内容
- 判断目录、文件是否存在
目录操作常用的函数如下:
- os.listdir() # 列出目录下的内容
- os.getcwd() # 显示当前工作路径
- os.chdir() # 切换工作目录
- os.mkdir() # 新建目录
- os.path.exists() # 判断目录是否存在
- os.path.isdir() # 判断是否是目录
示例代码1:
#!/usr/bin/python3
import os
test_path = r'D:\\python'
print(os.listdir(test_path))
输出内容为一个列表,由于内容太多这里暂不贴出了
示例代码2:
#!/usr/bin/python3
import os
print(os.getcwd()) # 获取当前工作目录
os.chdir('..') # 切换目录
print(os.getcwd())
os.mkdir('testdir') #创建路径
print(os.listdir())
输出:
'D:\python\jupyter'
'D:\python'
['.ipynb_checkpoints',
'bak',
'jupyter',
'project',
'test.txt',
'testdir',
'Untitled.ipynb',
]
路径就是一条字符串
- 左右斜线
- os.path.join()
- os.path.exists()
- os.path.isdir()
示例代码:
#!/usr/bin/python3
import os
url1 = os.path.join('a', 'b') # 路径拼接
print(url1)
print(os.path.exists(r'D:\python')) # 判断路径存不存在
print(os.path.isdir(r'D:\python')) # 判断是否是路径
输出:
'a\b'
True
True
相对路径与绝对路径
- os.path.abspath()
- os.path.isabs()
- os.path.relpath()
示例代码:
#!/usr/bin/python3
import os
url1 = os.path.abspath('.') # 得到.的绝对路径
print(url1)
print(os.path.isabs('.')) # 判断是否是绝对路径
url2 = os.path.relpath('testdir', 'D:\python\testdir') # 得到testdir的相对路径
print(url2)
输出:
'D:\python'
False
'..\python\testdir'
命名管理
路径各级名称
- path.split(os.path.sep) 前边的path是指的是一个变量
- os.path.basename()
- os.path.dirname()
删除文件shutil模块
- os.unlink
- shutil.rmtree(path)
复制、移动
- copy
- copytree
- move
示例代码1:
#!/usr/bin/python3
import os
dirname = r'D:\python\testdir'
print(os.path.sep) # 显示路径分隔符
namelist = dirname.split(os.path.sep)
print(namelist)
namelist1 = os.path.split(dirname) # 用最后的一个分隔符分开
print(namelist1)
filename = os.path.splitext(r'D:\python\xx.py') # 能取到目录下文件的后缀名
print(filename)
urlname = os.path.basename(dirname) # 找到最后一个目录的名字
print(urlname)
filename1 = os.path.basename(r'D:\python\xx.txt') # 还可以取到文件名
print(filename1)
urlname1 = os.path.dirname(path) # 取除最后一个目录之前的部分
print(urlname1)
输出:
'\'
['D:', 'python', 'testdir']
('D:\python', 'testdir')
('D:\python\*', '.py')
'testdir'
'xx.txt'
'D:\python'
示例代码2:
#!/usr/bin/python3
import os
import shutil
os.unlink(r'D:\python\xx.txt') # 删除文件xx.txt
shutil.rmtree('testdir') # 删除testdir目录
shutil.copytree('./test', './test1') # 复制目录
shutil.copy('./ss.txt', './ss1.txt') # 复制文件
shutil.move('./ss1.txt', 'ss2.txt') # 移动(重命名)文件
只要我想要的文件格式
文件属性
- os.path.getsize()
- os.path.isfile()
- os.stat()
后缀名
- split
- [-3:]
- re
- endswith
示例代码1:
#!/usr/bin/python3
import os
filename = r'D:\python\test.py'
os.path.getsize(filename)/1024 # 查看文件大小,以字节为单位
dirname = r'D:\python' # 获取目录的大小
os.path.getsize(dirname)/1024
os.path.isfile(filename) # 判断是否为文件
os.stat(filename) # 查看文件属性
filename[-3:] # 找后缀名,不通用
os.path.splitext(filename) # 取后缀名
filename.endswith('.py') # 是否以.py结尾
示例代码2:
#!/usr/bin/python3
import os
import re
# 以正则表达式取后缀名
filename = r'D:\python\test.py'
os.chdir('D:/python')
re_filename = re.compile('(.*py$)')
name = re_filename.match(filename).group()
print(name)
# os.walk 遍历目录,找到对应.py的后缀名
for root, dirs, files in os.walk(r'D:\python'):
for name in files:
file = os.path.join(root,name)
if re_filename.match(file):
print(name)
压缩备份文件
使用zipfile
- 创建压缩文件
- 查看信息
- 解压缩
示例代码:
#!/usr/bin/python3
import os
import zipfile
os.chdir('test')
my_zip = zipfile.ZipFile('bak.zip', 'w') # 创建一个bak.zip
my_zip.write('ss.txt', compress_type=zipfile.ZIP_DEFLATED) # 向bak.zip中添加文件
my_zip.write('ss2.txt', compress_type=zipfile.ZIP_DEFLATED) # 添加文件
my_zip.close() # 关闭bak.zip文件
# 查看
aa = zipfile.ZipFile('bak.zip')
aa.namelist() #查看压缩文件中的内容
aa.getinfo('ss.txt') # 查看压缩文件中内容的属性
aa.close()
# 解压缩
xx = zipfile.ZipFile('bak1.zip')
xx.extractall('../test1') # 解压到上一级目录
xx.close()