在Python中复制和替换文件

python语言提供了一个内置的模块“ shutil”,该模块对文件和文件集合提供了许多高级操作。特别是,提供了支持文件复制和删除的功能。

复制文件

    shutil.copyfile(src, dst, *, follow_symlinks=True)

从复制文件内容 source(src) 至 destination(dst)。src和dst是字符串形式的路径名。dst必须是完整的目标文件名。

提醒事项

  • 如果src和dst位于相同的位置,则会引发SameFileError

  • dst必须可写,否则将引发IO错误

  • 如果dst已经存在,它将被替换。

  • 如果follow_symlinks为false并且src是符号链接,则将创建一个新的符号链接,而不是将src指向的文件复制到该链接。

使用Python代码复制文件的方式 shutil.copyfile()

# 导入模块
import os
import shutil

# 获取当前工作目录
src_dir = os.getcwd()# 打印当前目录print(src_dir) # 复制文件
shutil.copyfile('test.txt', 'test.txt.copy2') #将src复制到dst

# 打印新文件列表
print(os.listdir())

输出结果

/home/sradhakr/Desktop/my_work
'test.txt.copy2'
['python_samples', 'test.txt', 'test', 'test.txt.copy', 'test.txt.copy2']

移动文件

    shutil.move(src, dst, copy_function=copy2)

上面的方法将文件从src递归移动到dst并返回目标。

提醒事项

  • 如果目标是现有目录,则src对象将移动到给定的dst中。

  • 如果目标已经存在并且不是目录,它将使用覆盖 os.rename()

  • 如果目标位于当前文件系统上,则 os.rename()用来。对于符号链接,将在dst中或作为dst创建指向src目标的新符号链接,并删除src。

  • 默认的copy_functioncopy2()。使用copy()因为copy_function允许移动成功。

使用Python代码移动文件

Commnd获取文件和目录列表:

    -bash-4.2$ ls
    python_samples  test test.txt test.txt.copy  test.txt.copy2

移动文件的代码:

# 导入模块
import os
import shutil

# getting src & dest directories
src_dir = os.getcwd() #获取当前的工作目录
dest_dir = src_dir + "/python_samples" 

# move方法移动文件
shutil.move('test.txt',dest_dir)

# 文件'test.txt'从src移到了dest
print(os.listdir()) 
os.chdir(dest_dir)# dest中的文件列表
print(os.listdir())

输出结果

'/home/sradhakr/Desktop/my_work/python_samples/test.txt'
['python_samples', 'test', 'test.txt.copy', 'test.txt.copy2']
['.git', '.gitignore', 'README.md', 'src', 'test.txt']

参考: https : //docs.python.org/3/faq/windows.html