Python笔记:os和shutil模块的文件及目录操作

这里主要归纳总结一下在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')
Python笔记:os和shutil模块的文件及目录操作

原文链接:https://beltxman.com/3205.html,若无特殊说明本站内容为 行星带 原创,未经同意禁止转载。

Scroll to top