这里主要归纳总结一下在 Python
中涉及到的文件目录以及文件的新建,重命名,删除,移动,压缩等操作是如何使用 os
模块以及 shutil
模块来完成的。
os模块
Python
是通过 os
模块来获取一些系统方面的信息以及目录、文件的增删等操作的;
系统
os.name # 操作系统类型,如果是posix,说明系统是Linux、Unix或Mac OS X,如果是nt,就是Windows系统。
os.cpu_count() # CPU核心数量
os.environ # 全部环境变量
os.environ.get('key') # 获取某个环境变量
目录和文件
os.getcwd() # 脚本工作的目录路径
# /User/PycharmProjects/tests
os.path.abspath(‘./testdir’) # 获取目录的绝对路径
# /User/PycharmProjects/tests/testdir
path = os.path.join('/User/PycharmProjects/tests', 'testdir') # 使用os.path.join()合成目录而不是直接拼接,避免不同系统分隔符问题
print(path)
# /User/PycharmProjects/tests/testdir
os.path.basename(path) # 获取文件名
os.path.dirname(path) # 获取文件上级路径
os.chdir(dirname) # 改变工作目录
os.path.getsize(name) # 获取文件大小
os.mkdir(path) # 创建目录,只创建最外层目录,默认的mode是0777,目录已存在抛出 FileExistsError异常
os.makedirs(path) # 递归创建多层目录
os.rmdir(path) # 删除目录,如果目录非空,则抛出一个OSError异常
os.remove(path) # 删除文件,如果path 是一个文件夹,将抛出OSError
os.rename(src, dst) # 重命名文件或目录,从 src 到 dst
os.listdir(path) # 返回路径下文件和文件夹的list
拆分目录
拼接目录使用 os.path.join()
,而对目录的拆分使用 os.path.split()
来完成。
print(os.path.split('/Users/PycharmProjects/tests/file.txt')) # 前一部分是目录,后一部分最后级的目录或文件名
# ('/Users/PycharmProjects/tests', 'file.txt')
print(os.path.splitext('/path/to/file.txt')) # 获取扩展名
# ('/path/to/file', '.txt')
判断
对目录和文件进行一些简单的判断。
os.path.isdir(path) # 是否目录
os.path.isfile(path) # 是否文件
os.path.exists(path) # 路径是否存在
shutil模块
shutil
模块是对 os
模块的补充,主要针对文件的拷贝、删除、移动、压缩和解压操作。
shutil文件及目录操作
# 复制文件的内容以及权限
shutil.copy(src, dst)
# 复制文件的内容以及文件的所有状态信息
shutil.copy2(src, dst)
# 递归的复制文件内容及状态信息
shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2,ignore_dangling_symlinks=False)
# 递归地删除文件
shutil.rmtree(path, ignore_errors=False, onerror=None)
压缩
对目录下文件进行压缩。
shutil.make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0,dry_run=0, owner=None, group=None, logger=None)
"""
base_name:压缩打包后的文件名或者路径名
format: 压缩或者打包格式 "zip", "tar", "bztar", "gztar"
root_dir : 将哪个目录或者文件打包(也就是源文件)
"""
# 将 /Users/PycharmProjects/test 下的文件打包放置当前程序目录, 文件名是www.zip
ret = shutil.make_archive("www", 'zip', root_dir='/Users/PycharmProjects/test')
# 将 /Users/PycharmProjects/test 下的文件打包放置 /Users/PycharmProjects/testdir 目录文件名是www.zip
ret = shutil.make_archive("/Users/PycharmProjects/testdir/www", 'zip', root_dir='/Users/PycharmProjects/test')
解压
压缩包的解压操作。
shutil.unpack_archive(filename[, extract_dir[, format]])
"""
filename: 压缩文档的完整路径
extract_dir: 解压缩路径,默认为当前目录。
format: 压缩格式。默认使用文件后缀名代码的压缩格式。”zip”, “tar”, “bztar”或”gztar”中的一个。
"""
# 将压缩包 /Users/PycharmProjects/testdir/www.zip 解压到 testdir3 目录下
shutil.unpack_archive('/Users/PycharmProjects/testdir/www.zip', 'testdir3')