如何在Python中复制文件?
当前回答
shutil有很多方法可以使用。其中之一是:
import shutil
shutil.copyfile(src, dst)
# 2nd option
shutil.copy(src, dst) # dst can be a folder; use shutil.copy2() to preserve timestamp
将名为src的文件的内容复制到名为dst的文件中。src和dst都需要是文件的整个文件名,包括路径。目标位置必须是可写的;否则,将引发IOError异常。如果dst已经存在,则将替换它。无法使用此功能复制字符或块设备和管道等特殊文件。对于copy,src和dst是作为strs给出的路径名。
另一个shutil方法是shutil.copy2()。它类似,但保留了更多的元数据(例如时间戳)。
如果使用os.path操作,请使用copy而不是copyfile。copyfile将只接受字符串。
其他回答
目录和文件复制示例,来自Tim Golden的Python Stuff:
import os
import shutil
import tempfile
filename1 = tempfile.mktemp (".txt")
open (filename1, "w").close ()
filename2 = filename1 + ".copy"
print filename1, "=>", filename2
shutil.copy (filename1, filename2)
if os.path.isfile (filename2): print "Success"
dirname1 = tempfile.mktemp (".dir")
os.mkdir (dirname1)
dirname2 = dirname1 + ".copy"
print dirname1, "=>", dirname2
shutil.copytree (dirname1, dirname2)
if os.path.isdir (dirname2): print "Success"
对于小文件和仅使用Python内置程序,可以使用以下一行代码:
with open(source, 'rb') as src, open(dest, 'wb') as dst: dst.write(src.read())
对于文件太大或内存很关键的应用程序来说,这不是最佳方式,因此应该首选Swati的答案。
使用subprocess.call复制文件
from subprocess import call
call("cp -p <file> <file>", shell=True)
您可以使用系统。
对于类Unix系统:
import os
copy_file = lambda src_file, dest: os.system(f"cp {src_file} {dest}")
copy_file("./file", "../new_dir/file")
从Python 3.5开始,您可以对小文件(例如:文本文件、小jpegs)执行以下操作:
from pathlib import Path
source = Path('../path/to/my/file.txt')
destination = Path('../path/where/i/want/to/store/it.txt')
destination.write_bytes(source.read_bytes())
write_bytes将覆盖目标位置的任何内容
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if
- 如何在Python中获得所有直接子目录