geekdoc-python-zh/docs/py4b/python-the-shutil-module.md

2.2 KiB
Raw Permalink Blame History

如何用 Shutil 复制和移动文件?

原文:https://www.pythonforbeginners.com/os/python-the-shutil-module

什么是 Shutil

shutil 模块帮助你自动复制文件和目录。

这样就省去了没有实际处理时打开、读取、写入和关闭文件的步骤。

这是一个实用模块,可以用来完成任务,如:复制,移动,或删除目录树

shutil. copy ( src , dest )
 # Basically the unix command cp src dst. 

# this copies the source file to the destination directory

# the destination directory has to exist

# if the filename already exists there, it will be overwritten

# access time and last modification time will be updated

# the same filename is used

# the permissions of the file are copied along with the contents.

import shutil
import os
source = os.listdir("/tmp/")
destination = "/tmp/newfolder/"
for files in source:
    if files.endswith(".txt"):
        shutil.copy(files,destination)

###########
shutil.copyfile ( src , dest )
# copy data from src to dest 

# both names must be files.

# copy files by name 
import shutil  
shutil.copyfile('/path/to/file', '/path/to/other/phile') 

############
shutil.move
# recursively move a file or directory (src) to another location (dst).

# if the destination is a directory or a symlink to a directory, then src is moved
inside that directory.

# the destination directory must not already exist.

# this would move files ending with .txt to the destination path
import shutil
import os
source = os.listdir("/tmp/")
destination = "/tmp/newfolder/"
for files in source:
    if files.endswith(".txt"):
        shutil.move(files,destination)

####################
shutil.copytree ( src , dest )
# recursively copy the entire directory tree rooted at src to dest. 

# dest must not already exist. 

# errors are reported to standard output.

####################
import shutil
import os
SOURCE = "samples"
BACKUP = "samples-bak"
# create a backup directory
shutil.copytree(SOURCE, BACKUP)
print os.listdir(BACKUP)

####################
shutil.rmtree ( path )

# recursively delete a directory tree.
# This removes the directory 'three' and anything beneath it in the filesystem.
import shutil
shutil.rmtree('one/two/three')