IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> (Python shutil 模块详解 -> 正文阅读

[Python知识库](Python shutil 模块详解

1、模块介绍

import shutil

# copy data from file-like object fsrc to file-like object fdst
copyfileobj(fsrc, fdst, length=0)

# Copy data from src to dst in the most efficient way possible.
# If follow_symlinks is not set and src is a symbolic link, a new
# symlink will be created instead of copying the file it points to.
copyfile(src, dst, *, follow_symlinks=True)

# Copy mode bits from src to dst.
# If follow_symlinks is not set, symlinks aren't followed if and only 
# if both `src` and `dst` are symlinks.  If `lchmod` isn't available
# (e.g. Linux) this method does nothing.
copymode(src, dst, *, follow_symlinks=True)

# Copy file metadata
# If the optional flag `follow_symlinks` is not set, symlinks aren't
# followed if and only if both `src` and `dst` are symlinks.
copystat(src, dst, *, follow_symlinks=True)

# Copy data and mode bits ("cp src dst"). Return the file's destination.
copy(src, dst, *, follow_symlinks=True)

# Copy data and metadata. Return the file's destination.
copy2(src, dst, *, follow_symlinks=True)

# Recursively copy a directory tree and return the destination directory.
copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False, dirs_exist_ok=False)

#  Recursively delete a directory tree.
# This is similar to the Unix "rm -rf" command. Very dangerous. Be careful to use it.
rmtree(path, ignore_errors=False, onerror=None)

# Recursively move a file or directory to another location. This is
# similar to the Unix "mv" command. Return the file or directory's destination.
move(src, dst, copy_function=copy2)

2、copytree 示例

  • 递归复制目录,默认使用 copy2,也就是带更多的元数据复制
  • src、dst 必须是目录,src 必须存在,dst 必须不存在
  • ignore=func,提供一个 callable(src, names) -> ignored_names,提供一个函数,它会被调用。src是源目录, namesos.listdir(src) 的结果,就是列出 src 中的文件名,返回值是要被过滤的文件名的set类型数据
copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False, dirs_exist_ok=False)
In [426]: import os

In [427]: os.listdir('src')
Out[427]: ['a1.txt', 'a2.txt', 'b1.txt', 'b2.txt', 'b3.txt', 'c1.txt']

In [428]: p = Path('src')

In [429]: os.listdir(p)
Out[429]: ['a1.txt', 'a2.txt', 'b1.txt', 'b2.txt', 'b3.txt', 'c1.txt']

In [430]: ll src/
total 0
-rw-r--r--. 1 root 0 Mar 28 11:37 a1.txt
-rw-r--r--. 1 root 0 Mar 28 11:37 a2.txt
-rw-r--r--. 1 root 0 Mar 28 11:37 b1.txt
-rw-r--r--. 1 root 0 Mar 28 11:37 b2.txt
-rw-r--r--. 1 root 0 Mar 28 11:37 b3.txt
-rw-r--r--. 1 root 0 Mar 28 11:38 c1.txt

In [420]: import shutil

# 递归复制目录时,忽略 'a' 开头的文件
In [421]: def ignore(src, names):
     ...:     return set(filter(lambda x:x.startswith('a'), names))

In [424]: shutil.copytree('src', 'dst', ignore=ignore)
Out[424]: 'dst'

In [425]: ll dst/
total 0
-rw-r--r--. 1 root 0 Mar 28 11:37 b1.txt
-rw-r--r--. 1 root 0 Mar 28 11:37 b2.txt
-rw-r--r--. 1 root 0 Mar 28 11:37 b3.txt
-rw-r--r--. 1 root 0 Mar 28 11:38 c1.txt
In [431]: shutil.rmtree('dst')

In [433]: ll src/
total 0
-rw-r--r--. 1 root 0 Mar 28 11:37 a1.txt
-rw-r--r--. 1 root 0 Mar 28 11:37 a2.txt
-rw-r--r--. 1 root 0 Mar 28 11:37 b1.txt
-rw-r--r--. 1 root 0 Mar 28 11:37 b2.txt
-rw-r--r--. 1 root 0 Mar 28 11:37 b3.txt
-rw-r--r--. 1 root 0 Mar 28 11:38 c1.txt

# 递归复制目录时,忽略 'b' 开头的文件
In [435]: def ignore(src, names):
     ...:     return {name for name in names if name.startswith('b')}

In [436]: shutil.copytree('src', 'dst', ignore=ignore)
Out[436]: 'dst'

In [437]: ll dst/
total 0
-rw-r--r--. 1 root 0 Mar 28 11:37 a1.txt
-rw-r--r--. 1 root 0 Mar 28 11:37 a2.txt
-rw-r--r--. 1 root 0 Mar 28 11:38 c1.txt

3、move 示例

In [438]: os.rename('dst', 'dst1')

In [439]: ll
total 28
drwxr-xr-x. 3 root  15 Mar 25 20:42 a/
drwxr-xr-x. 3 root  15 Mar 25 20:42 dest/
drwxr-xr-x. 2 root  48 Mar 28 11:38 dst1/
-rw-r--r--. 1 root   9 Mar 24 22:35 dst.txt
-rw-r--r--. 1 root 214 Mar 27 23:34 mysql.ini
-rw-r--r--. 1 root  42 Mar 26 21:03 ser
-rw-r--r--. 1 root  51 Mar 27 19:57 ser.txt
drwxr-xr-x. 2 root  90 Mar 28 11:38 src/
-rw-r--r--. 1 root   9 Mar 24 22:12 src.txt
-rw-r--r--. 1 root 194 Mar 28 10:24 test.csv
-rw-r--r--. 1 root 180 Mar 27 21:20 test.ini

In [440]: shutil.move('dst1', 'dst')
Out[440]: 'dst'

In [441]: ll
total 28
drwxr-xr-x. 3 root  15 Mar 25 20:42 a/
drwxr-xr-x. 3 root  15 Mar 25 20:42 dest/
drwxr-xr-x. 2 root  48 Mar 28 11:38 dst/
-rw-r--r--. 1 root   9 Mar 24 22:35 dst.txt
-rw-r--r--. 1 root 214 Mar 27 23:34 mysql.ini
-rw-r--r--. 1 root  42 Mar 26 21:03 ser
-rw-r--r--. 1 root  51 Mar 27 19:57 ser.txt
drwxr-xr-x. 2 root  90 Mar 28 11:38 src/
-rw-r--r--. 1 root   9 Mar 24 22:12 src.txt
-rw-r--r--. 1 root 194 Mar 28 10:24 test.csv
-rw-r--r--. 1 root 180 Mar 27 21:20 test.ini
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:19:14  更:2022-03-30 18:20:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:33:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码