100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > python3 文件 复制 重命名 移动 删除

python3 文件 复制 重命名 移动 删除

时间:2023-12-29 14:26:22

相关推荐

python3 文件 复制 重命名 移动 删除

简介

shutil 模块提供了多个针对文件或文件集合的高等级操作。 尤其是,文件的复制和删除操作。 对于独立文件的操作, 参考os 模块

警告: 即使是更高等级的文件复制功能 (shutil.copy(), shutil.copy2()) 也不能复制所有文件的元数据(metadata)。 在 POSIX 平台上,这意味着文件的属主和用户组会丢失,ACLs也一样。 在 Mac OS 上, 由于没有使用 the resource fork 和其他元数据,因此意味着 resources 会丢失以及文件类型和创建者ID将不会保持原有状态。 在 Windows 上, 文件所有者, ACLs 以及交换数据流(alternate data streams) 不会被复制。

文件夹和文件复制

shutil.copyfileobj(fsrc, fdst[, length])

复制类文件(file-like)对象fsrc的内容到类文件对象fdst。 可选整数参数length, 指定缓冲区大小。具体而言,length的值为负数,复制操作不会将源数据分块进行复制。 默认的,为了避免不可控制的内存消耗,数据会被分块存入chunk中。注意:如果fsrc对象的当前文件位置不为 0 ,则只有从当前文件位置到文件末位的内容会被复制。

shutil.copyfile(src, dst)

复制文件src的内容(不包含元素据)到文件dst中。dst必须为一个完整的目标文件。 如果要将文件复制目标文件夹中,查看shutil.copy()srcdst不能为同一个文件,否则会报错。 目标文件位置必须为可写状态,否则会触发IOError。 如果dst已经存在,则会被覆盖。 特别的, 字符设备、块设备和管道不能使用此方法复制。 使用字符串指定srcdst路径。

shutil.copymode(src, dst)

复制src的文件权限位到dst。 文件的内容、属主和用户组不会受影响。 使用字符串指定srcdst路径。

shutil.copystat(src, dst)

复制文件src的文件权限位、最后访问 access 时间、最后修改 modification 时间和**标识 flags **到dst。文件的内容、属主和用户组不会受影响。 使用字符串指定srcdst路径。

shutil.copy(src, dst)

复制文件srcdst文件或文件夹中。 如果dst是文件夹, 则会在文件夹中创建或覆盖一个文件,且该文件与src的文件名相同。 文件权限位会被复制。使用字符串指定srcdst路径。

shutil.copy2(src, dst)

shutil.copy()类似,另外会同时复制文件的元数据。 实际上,该方法是shutil.copy()shutil.copystat()组合。该方法相当于 Unix 命令的 ` cp -p `。

shutil.ignore_patterns(*patterns)

该工厂函数创建了一个可以被调用的函数, 该函数可以用于shutil.copytree()的 ** ignore 参数**的值, 以跳过正确匹配的文件和文件夹。 更多参考下面离职。

shutil.copytree(src, dst, symlinks=False, ignore=None)

递归复制整个src文件夹。 目标文件夹名为dst,不能已经存在;方法会自动创建dst根文件夹。 文件夹权限和时间通过shutil.copystat()复制, 单独的文件通过shutil.copy2()复制。 如果 ` symlinks ` 为真, 源文件夹中的符号链接将会被保留,但是原链接的元数据不会被复制。如果值为假或被省略,则链接文件指向文件的内容和元数据复制到新文件夹树中。 如果指定了ignore, 那么他必须是调用队列(callable),且作为shutil.copytree()的参数。参数包括文件夹本机及并通过os.listdir()返回文件夹包含的内容。由于shutil.copytree()递归复制,因此ignore会在复制每个子文件夹的时候被调用。 callable必须返回一个由当前文件夹下的文件夹和文件所组成的队列(i.e. a subset of the items in the second argument); 这些文件夹和文件在复制过程中会被忽略。可以使用shutil.ignore_patterns()创建callable。

如果发生意外,shutil.Error()返回错误原因。

该源码应该被当作一个示例而不是最终的工具。

Changed in version 2.3: Error is raised if any exceptions occur during copying, rather than printing a message. Changed in version 2.5: Create intermediate directories needed to create dst, rather than raising an error. Copy permissions and times of directories using copystat(). Changed in version 2.6: Added the ignore argument to be able to influence what is being copied.

移动和删除

shutil.rmtree(path[, ignore_errors[, onerror]])

删除整个目录树;path必须指向一个文件夹,但不能是一个指向文件夹的符号链接。 如果 ` ignore_errors ` 值为真, 则删除失败时的信息将会被忽略。如果值为假或省略,那么这些错误将通过onerror指定的 handler 进行处理; 如果onerror被省略,则会 raise 一个异常。

如果指定了onerror,则必须是包含三个参数:function, path 和 excinfo的 callable 。 第一个参数 ` function ` , 该函数用于 raise 异常;该函数可以是os.path.islink(), os.listdir(), os.remove(), os.rmdir()。 第二个参数path为传递给第一个参数的路径。 第三个参数excinfosys.exc_info()返回的异常信息。 通过onerrorraise 的异常不会被捕捉。

Changed in version 2.6: Explicitly check for path being a symbolic link and raiseOSErrorin that case.

shutil.move(src, dst)

将一个文件或文件夹从src移动到dst如果dst已存在且为文件夹,则src将会被移动到dst内。 如果如dst存在但不是一个文件夹, 取决于os.rename()的语义,dst可能会被覆盖。 如果dstsrc在相同的文件系统下, 则使用os.rename()。 否认则,将使用shutil.copy2()复制srcdst并删除。

shutil.Error

该异常汇集文件操作时 raise 的异常。 例如shutil.copytree(), the exception argument is a list of 3-tuples (srcname, dstname, exception).

实例

对于文件的操作,主要依赖OS模块和shutil模块;

下面直接以例子来说明关于文件的复制、重命名、移动和删除的操作:

一、复制

1、文件的复制

import osimport shutilshutil.copy(u'F:\\learn_py\\testdata\\PPT蒙板.docx',u'F:\\learn_py')

2、复制并重命名文件

import osimport shutilshutil.copy(u'F:\\learn_py\\testdata\\PPT蒙板.docx',u'F:\\learn_py\\PPT.docx')

3、复制整个目录

import osimport shutilshutil.copytree('F:\\learn_py\\testdata','f:\\testdatanew')

二、删除

1、删除文件

import osimport shutilos.unlink(u'f:\\testdatanew\\PPT目录.docx')

2、删除文件夹,如果文件夹是空的,则删除空文件夹,如果文件夹不为空,那么会报出错误信息

import osimport shutiltry:os.rmdir('F:\\testdatanew')except Exception as ex:print ("错误信息:"+str(ex))#提示:错误信息,目录不是空的

3、删除文件夹

import osimport shutilshutil.rmtree('F:\\testdatanew')

三、移动

1、移动文件

import osimport shutilshutil.move(u'F:\\learn_py\\testdata\\PPT蒙板.docx','F:\\learn_py')

2、移动文件夹

import osimport shutilshutil.move(u'F:\\learn_py\\testdata','F:\\testdata')

四、重命名

1、重命名文件

import osimport shutilshutil.move(u'F:\\testdata\\PPT目录.docx',u'F:\\testdata\\PPT目录新.docx')

2、重命名文件夹

import osimport shutilshutil.move(u'F:\\testdata',u'F:\\testdatanew')

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。