python中复制大文件的命令_如何使用python复制大概200G的数据[任何语言只要能实现]...

展开全部

如果我理解的正确的话,楼主是要32313133353236313431303231363533e58685e5aeb931333332626137copy大文件吧。

python最经常使用的copy函数,应该是shutil.copyfile()了,它默认以16384bytes 的大小作为缓冲区,对于小的文件,的确不错。但是处理到大的文件的时候,性能下降就很严重。过小的buffer会不合适。

经过多次的尝试,发现10Mb的buffer最合适,再高也没有性能的提升。重载后的copy函数如下def copyFile(src, dst, buffer_size=10485760, perserveFileDate=True):

'''

Copies a file to a new location. Much faster performance than Apache Commons due to use of larger buffer

@param src:    Source File

@param dst:    Destination File (not file path)

@param buffer_size:    Buffer size to use during copy

@param perserveFileDate:    Preserve the original file date

'''

#    Check to make sure destination directory exists. If it doesn't create the directory

dstParent, dstFileName = os.path.split(dst)

if(not(os.path.exists(dstParent))):

os.makedirs(dstParent)

#    Optimize the buffer for small files

buffer_size = min(buffer_size,os.path.getsize(src))

if(buffer_size == 0):

buffer_size = 1024

if shutil._samefile(src, dst):

raise shutil.Error("`%s` and `%s` are the same file" % (src, dst))

for fn in [src, dst]:

try:

st = os.stat(fn)

except OSError:

# File most likely does not exist

pass

else:

# XXX What about other special files? (sockets, devices...)

if shutil.stat.S_ISFIFO(st.st_mode):

raise shutil.SpecialFileError("`%s` is a named pipe" % fn)

with open(src, 'rb') as fsrc:

with open(dst, 'wb') as fdst:

shutil.copyfileobj(fsrc, fdst, buffer_size)

if(perserveFileDate):

shutil.copystat(src, dst)

使用的时候记得添加相应的包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值