gpt4 book ai didi

Python 猴子补丁 Shutil

转载 作者:太空宇宙 更新时间:2023-11-03 14:31:26 29 4
gpt4 key购买 nike

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

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')

我希望它能打印“COPYING FILE FAST”,但事实并非如此。有什么办法可以实现我想要做的事情吗?

最佳答案

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

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')

关于Python 猴子补丁 Shutil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47257033/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com