os.makedirs可以递归的创建目录结构
import os
os.makedirs('dirname', exist_ok=True)
exist_ok = True指定了,如果某个要创建的目录已经存在,也不报错。
os.remove可以删除一个文件
os.remove('xx.py')
shutil.rmtree() 可以递归的删除某个目录所有的子目录和子文件
import shutil
shutil.rmtree('tmp', ignore_errors=True)
参数ignore_errors = True 保证如果目录不为空,不会抛出异常。
要拷贝一个目录里面所有的内容(包括子目录和文件、子目录里面的子目录和文件)到另一个目录中,可以使用shutil的copytree函数
form shutil import copytree
copytree('d:/tools/aaa', 'e:/new/bbb')
拷贝前,目标目录必须不存在,否则会报错。
拷贝前,如果e:/new这个目录不存在,执行时会创建e:/new目录,再创建e:/new/bbb目录,再拷贝
拷贝前,如果e:/new存在,但是e:/new/bbb不存在,就只会创建e:/new/bbb,再拷贝
os.rename('d:/tools/aaa', 'd:/tools/bbb')
os.rename('d:/tools/first.py', 'd:/tools/second.py')
linux系统上,如果重命名之前d:/tools/second.py已存在,则会覆盖。
import os
path = '/user/beazley/data/data.csv'
# 获取路径中的文件名部分
os.path.basename(pat) # 'data.csv'
# 获取路径中的目录部分
os.path.dirname(path) # '/user/beazley/data'
# 文件路径的拼接
os.path.join('tmp', 'data', os.path.basename(path))
# 'tmp/data/data.csv'
os.path.exists('d:/systems/cmd.exe')
os.paht.exists('d:/systems')
os.path.isfile('d:/systems/cmd.exe')
os.path.isdir('d:systems')
# 返回文件大小
os.path.getsize('file')
# 返回文件的最后修改日期,是秒时间
os.path.getmtime('file')
# 把秒时间转化为日期时间
time.ctime(os.path.getmtime('/etc/passwd'))
cwd = os.getcwd()
# 切抽当前工作目录到另外的路径
os.chdir(path)
# 目标目录
targetDir = r'd:/tmp/util/dist/check'
files = []
dirs = []
# dirpath:当前遍历到的目录名
# dirnames:存放当前dirpath中的所有子目录名
# filenames:存放当前dirpath中的所有文件名
for(dirpath, dirnames, filenames) in os.walk(targetDir):
files += filenames
dirs += dirnames
print(files)
print(dirs)
获取目录下所有文件的全路径:
targetDir = r'd:/tmp/util/dist/check'
for(dirpath, dirnames, filenames) in os.walk(targetDir):
for fn in filenames:
# 把dirpath和每个文件名拼接起来
fpath = os.path.join(dirpath, fn)
取目录中所有的文件和子目录名:
targetDir = r'd:/tmp/util/dist/check'
files = os.listdir(targetDir)
print(files)
如果只需要获取目录中所有的文件,或只需要子目录:
import os
from os.path import isfile, join, isdir
targetDir = r'd:/tmp/util/dist/check'
# 所有的文件
print([f for f in os.listdir(targetDir) if isfile(join(targetDir, f))])
# 所有的目录
print([f for f in os.listdir(targetDir) if isdir(join(targetDir, f))])
import glob
exes = glob.glob(r'd:/tmp/*.txt')
print(exes)