Python 中 shutil 的使用
Python 里边 os 模块虽然有一些文件目录创建和删除的部分简单操作,但是有一点很不太友好,就是删除目录的时候还必须让目录为空——虽然比较安全,我也能理解,但是让我很不爽,毕竟我想要的是 rm -rf 的那种摧枯拉朽的气势:
os.makedirs()
os.makedir()
os.remove()
os.removedirs()
os.rmdir()root@master ~# python3
Python 3.6.8 (default, Aug 7 2019, 17:28:10)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.removedirs('/root/pandas')
Traceback (most recent call last):File "<stdin>", line 1, in <module>File "/usr/lib64/python3.6/os.py", line 238, in removedirsrmdir(name)
OSError: [Errno 39] Directory not empty: '/root/pandas'
>>> os.rmdir('/root/pandas')
Traceback (most recent call last):File "<stdin>", line 1, in <module>
OSError: [Errno 39] Directory not empty: '/root/pandas'
以致于每当我想递归删除目录,或者递归拷贝目录的时候,只能求助于 subprocess 了。
import subprocesssubprocess.run(['rm', '-rf', 'run'],stderr=subprocess.STDOUT, stdout=subprocess.DEVNULL)
subprocess.run(['cp', '-r', config_dir, root_path],stderr=subprocess.STDOUT, stdout=subprocess.DEVNULL)
这时候,shutil 就上场了,如果用 shutil 的话,语法就很简单了。
(注意:shell 命令 cp 是不会主动创建 dst 目录的,但是 shutil.copytree 会;简单理解就是:shutil.copytree 会将 src 文件夹里的所有内容拷贝至 dst 文件夹,和 cp 命令稍微有点差异)。
import shutilshutil.rmtree('run')
shutil.copytree(config_dir, os.path.join(root_path, 'config'))
具体用法如下。
copytree
copytree(src, dst, symlinks=False, ignore=None): 拷贝文档树,将 src 文件夹里的所有内容拷贝至 dst 文件夹
- src:源文件夹
- dst:复制至 dst 文件夹,该文件夹会自动创建,需保证此文件夹不存在,否则将报错
- symlinks:是否复制软连接,True复制软连接,False不复制,软连接会被当成文件复制过来,默认False。
rmtree
rmtree(path, ignore_errors=False, οnerrοr=None): 移除文档树,将文件夹目录删除。我自己感觉有点像 rm -rf path
copyfile
copyfile(src, dst): 将 src 文件内容复制至 dst 文件
- src: 源文件路径
- dst: 复制至 dst 文件,若 dst 文件不存在,将会生成一个 dst 文件;若存在将会被覆盖
import shutil
shutil.copyfile("file.txt","file_copy.txt")
copymode
copymode(src, dst): 将 src 文件权限复制至 dst 文件。文件内容,所有者和组不受影响
- src: 源文件路径
- dst: 将权限复制至 dst 文件,dst 路径必须是真实的路径,并且文件必须存在,否则将会报文件找不到错误
import shutil
shutil.copymode("file.txt","file_copy.txt")
copystat
copystat(src, dst): 将权限,上次访问时间,上次修改时间以及 src 标志复制到 dst。文件内容,所有者和组不受影响
- src: 源文件路径
- dst: 将权限复制至 dst 文件,dst 路径必须是真实的路径,并且文件必须存在,否则将会报文件找不到错误。
import shutil
shutil.copystat("file.txt","file_copy.txt")
copy
copy(src, dst): 将文件 src 复制至 dst。dst 如果是个目录,会在该目录下创建与 src 同名的文件。权限会被一并复制。本质是先后调用了 copyfile 与 copymode 而已。
- src:源文件路径
- dst:复制至 dst 文件夹或文件
>>> import shutil
>>> shutil.copy('file', 'filecopy')
'filecopy'
>>> shutil.copy('file', './upload')
'./upload/file'
>>> shutil.copy('file', './upload/file')
'./upload/file'
>>> shutil.copy('file', './upload/filecopy')
'./upload/filecopy'
copy2
copy2(src, dst): 将文件 src 复制至 dst。dst 如果是个目录,会在该目录下创建与 src 同名的文件,若该目录下存在同名文件,将会报错提示已经存在同名文件。权限、上次访问时间、上次修改时间和 src 的标志会一并复制至 dst。本质是先后调用了copyfile 与 copystat方法而已。
- src:源文件路径
- dst:复制至 dst 文件夹或文件
>>> import shutil
>>> shutil.copy2('file', 'filecopy')
'filecopy'
>>> shutil.copy2('file', './upload')
'./upload/file'
>>> shutil.copy2('file', './upload/filecopy')
'./upload/filecopy'
move
move(src, dst): 将 src 移动至 dst 目录下。若 dst 目录不存在,则效果等同于 src 改名为 dst。若 dst 目录存在,将会把 src 文件夹的所有内容移动至该目录下面
- src:源文件夹或文件
- dst:移动至 dst 文件夹,或将文件改名为 dst 文件。如果 src 为文件夹,而 dst 为文件将会报错
import shutil,os
# 示例一,将src文件夹移动至dst文件夹下面,如果bbb文件夹不存在,则变成了重命名操作
folder1 = os.path.join(os.getcwd(),"aaa")
folder2 = os.path.join(os.getcwd(),"bbb")
shutil.move(folder1, folder2)
# 示例二,将src文件移动至dst文件夹下面,如果bbb文件夹不存在,则变成了重命名操作
file1 = os.path.join(os.getcwd(),"aaa.txt")
folder2 = os.path.join(os.getcwd(),"bbb")
shutil.move(file1, folder2)
# 示例三,将src文件重命名为dst文件(dst文件存在,将会覆盖)
file1 = os.path.join(os.getcwd(),"aaa.txt")
file2 = os.path.join(os.getcwd(),"bbb.txt")
shutil.move(file1, file2)
chown
chown(path, user=None, group=None): 修改路径指向的文件或文件夹的所有者或分组。
- path:路径
- user:所有者,传递user的值必须是真实的,否则将报错no such user
- group:分组,传递group的值必须是真实的,否则将报错no such group
import shutil,os
path = os.path.join(os.getcwd(),"file.txt")
shutil.chown(path,user="root",group="root")
which
which(cmd, mode=os.F_OK | os.X_OK, path=None): 获取给定的cmd命令的可执行文件的路径。
import shutil
info = shutil.which("python3")
print(info) # /usr/bin/python3
Python 中 shutil 的使用相关推荐
- python中shutil.copyfile的用法_Python shutil.copyfile()用法及代码示例
Python中的Shutil模块提供了许多对文件和文件集合进行高级操作的功能.它属于Python的标准实用程序模块.此模块有助于自动执行文件和目录的复制和删除过程. shutil.copyfile() ...
- python中shutil模块的用法-高级文件操作模块
目录 前言 一.shutil是什么? 二.使用步骤 1. 安装shutil库 2. shutil库的使用 3. 复制函数 3.1 shutil.copy(src,dst) ==> 拷贝文件和权限 ...
- python中shutil模块_python文件、文件夹、压缩包处理模块-shutil模块-阿里云开发者社区...
shutil模块 高级的文件.文件夹.压缩包 处理模块 本节内容基本在linux下python交互环境实现 复制移动文件.文件夹 将文件内容拷贝到另一个文件中,可以部分内容 格式如下: ``` shu ...
- python中shutil模块的用法_python中的os,shutil模块的定义以及用法
#os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为'\\'os.name 字符串指示你正在使用的平台.比如对于Windows,它是'nt',而对于Linux/Unix用户 ...
- python中shutil是什么意思,很多关于shutil的错误,说文件在Python中时不存在
以下是我的所有代码:import shutil import glob import os for filename in glob.glob(r"C:/Users/Aydan/Deskto ...
- python中shutil是什么意思_python之shutil模块详解
-- --High-level file operations 高级的文件操作模块. os模块提供了对目录或者文件的新建/删除/查看文件属性,还提供了对文件以及目录的路径操作.比如说:绝对路径,父目 ...
- python中shutil.copyfile的用法_用Python复制文件的9个方法
Python 中有许多"开盖即食"的模块(比如 os,subprocess 和 shutil)以支持文件 I/O 操作.在这篇文章中,你将会看到一些用 Python 实现文件复制的 ...
- python中shutil模块
shutil是对OS中文件操作的补充:移动.复制.打包.压缩.解压. 1.copy文件内容到另一个文件,可以copy指定大小的内容. shutil.copyfileobj(fsrc, fdst[, l ...
- python中shutil是什么意思_python中shutil模块
shutil是对OS中文件操作的补充:移动.复制.打包.压缩.解压. 1.copy文件内容到另一个文件,可以copy指定大小的内容.shutil.copyfileobj(fsrc, fdst[, le ...
- python中shutil.copyfile的用法_python模块之shutil
shutil模块提供了一些针对文件和目录的高级操作,主要是拷贝.移动.对于单个文件的操作,还可参考os模块 Warning:即使是高级别的拷贝函数(shutil.copy(),shutil.copy2 ...
最新文章
- 建博客的原因。。。。
- 结合jenkins以及PTP平台的性能回归测试
- 官网快速搭建spring boot 项目
- mysql汉字占几个字符_mysql和oracle的一个汉字占几个字符
- PHP10段常用功能代码
- 预训练模型对实体的表示能力差?一个简单有效的解法来了!(开源)
- c语言中转义字符有什么作用,C语言中转义字符有什么作用?
- html表格中插入单行文本框,el-table复选框选中单行或多行点击按钮禁用el-table里面的input输入框该怎么判断?...
- HTML5 表单相关
- 去哪儿网:报复性滑雪来了 机票预订量超去年
- Linux 10分钟掌握Linux常用开发工具及编译的四个过程
- 机器学习和算法学习网址
- db.serverStatus()
- python实现数据库查询导出到excel案例
- 织梦采集侠自动采集伪原创发布设置
- 通达信标记符号_通达信49个图标,高手指教,通达信软件里的股票标记符号,能增加吗...
- centos7下载busybox
- 内存卡坏了怎么修复?内存卡恢复也不难
- 招行两地一卡——PayPal美元兑换人民币的最佳解决方案
- 测试经典名言100句