在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_function是copy2()。使用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