首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Monkey Patch shutil

Python Monkey Patch shutil
EN

Stack Overflow用户
提问于 2017-11-13 12:22:37
回答 1查看 165关注 0票数 1

我正在尝试修补shutil.copyfileobj()函数,以便将其默认长度从16*1024更改为更大的值(128*1024)。在内部,其他的shutil方法,如move,会调用copyfileobj()函数,我希望这些调用也会受到猴子补丁的影响。这似乎不起作用:

代码语言:javascript
复制
import shutil

shutil.copyfileobjOrig = shutil.copyfileobj

def copyfileobjFast(fsrc, fdst, length=16*1024):
    print('COPYING FILE FAST')
    shutil.copyfileobjOrig(fsrc, fdst, length=128*1024)

shutil.copyfileobj = copyfileobjFast

shutil.move('test.txt', 'testmove.txt')

我希望它能打印出“快速复制文件”,但它没有。有什么方法可以实现我想要做的事情吗?

EN

回答 1

Stack Overflow用户

发布于 2017-11-13 20:59:00

我的测试用例坏了。仅当源文件和目标文件位于不同的设备上时,shutil.move()才执行复制。这是一个更新的版本,显示了猴子补丁的工作情况:

代码语言:javascript
复制
import shutil

shutil.copyfileobjOrig = shutil.copyfileobj

def copyfileobjFast(fsrc, fdst, length=16*1024):
    print('COPYING FILE FAST')
    shutil.copyfileobjOrig(fsrc, fdst, length=128*1024)

shutil.copyfileobj = copyfileobjFast

shutil.move('/dev1/test.txt', '/dev2/testmove.txt')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47257033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档