Python 蟒蛇猴贴子
我正在尝试使用monkey patch shutil.copyfileobj()函数,以便将其默认长度从16*1024更改为更大的值(128*1024)。在内部,其他shutil方法(如move)调用copyfileobj()函数,我希望这些调用也受到monkey补丁的影响。这似乎不起作用:Python 蟒蛇猴贴子,python,monkeypatching,Python,Monkeypatching,我正在尝试使用monkey patch shutil.copyfileobj()函数,以便将其默认长度从16*1024更改为更大的值(128*1024)。在内部,其他shutil方法(如move)调用copyfileobj()函数,我希望这些调用也受到monkey补丁的影响。这似乎不起作用: import shutil shutil.copyfileobjOrig = shutil.copyfileobj def copyfileobjFast(fsrc, fdst, length=16*1
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')
我希望它能打印“快速复制文件”,但事实并非如此。有什么方法可以实现我想做的吗?我的测试用例被破坏了。仅当源文件和目标文件位于不同的设备上时,才会执行复制。下面是一个更新版本,它显示了monkey补丁的工作原理:
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')
仅当源路径和目标路径位于不同的文件系统上时才执行复制。它们在不同的文件系统上吗?@jwodder,doh!谢谢,成功了。