Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 蟒蛇猴贴子_Python_Monkeypatching - Fatal编程技术网

Python 蟒蛇猴贴子

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

我正在尝试使用monkey patch shutil.copyfileobj()函数,以便将其默认长度从16*1024更改为更大的值(128*1024)。在内部,其他shutil方法(如move)调用copyfileobj()函数,我希望这些调用也受到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('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!谢谢,成功了。