如何在保持原件完整的同时修改模块和包?

时间:2015-10-02 15:44:06

标签: python pdf inheritance

我有一个用我的python编写的程序,使用PyPDF2包来刮取一批pdf文件。这些PDF格式不是最好的,所以为了运行我的程序,我需要按照本网站的建议修改软件包库中的pdf.py文件:

https://cheonhyangzhang.wordpress.com/2015/03/31/python-pdffilereader-pdfreaderror-eof-marker-not-found/

我是否可以在保持原始文件完整的同时对文件实施此更改?我尝试创建一个PdfFileReader类的子类,并修改了' read'但是,我发现这导致了一些我想避免的导入依赖性问题。

有更简单的方法吗?

2 个答案:

答案 0 :(得分:0)

我建议将pdf.py文件复制到我们的脚本目录中,并将其重命名为mypdf.py。然后,您可以根据需要修改副本,而不会影响原件。您可以使用

导入包
import mypdf

我为shutil.py做了类似的事情,因为Windows中的默认缓冲区大小太小,无法传输大文件。

答案 1 :(得分:0)

您可以使用setattr()这样添加(或重新定义)类的方法(其中类已被内联定义,而不是仅为了说明而导入):

class Class(object):
    pass

def func(self, some_other_argument):
    return some_other_argument

setattr(Class, 'func', func)

if __name__ == '__main__':
    c = Class()
    print(c.func(42))  # -> 42