我遇到一些问题,我用一个小程序编辑了使用pyPdf编辑PDF。我试图到PDF(self.lastpage)作为默认参数的最后一页传递到一个类的方法(pageoutput)当我这样做,我收到以下错误:NameError:传递属性作为参数时未定义名称'self'方法
Traceback (most recent call last):
File "C:\Census\sf1.py", line 5, in <module>
class PdfGet():
File "C:\Census\sf1.py", line 35, in PdfGet
def pageoutput(self,outfile,start_page=0,end_page=self.lastpage):
NameError: name 'self' is not defined
如果我只需指定一个号码作为end_page它工作,但它失败,如果我使用一个属性。这个错误对我来说是一个神秘的赌注。它似乎没有与pypdf的问题,因为我可以打印PDF的最后一页没有问题。对于发生了什么,我将不胜感激!
这里是我的代码(我用pypdf的3.X版本compatbile如果该事项):
from pyPdf import PdfFileWriter, PdfFileReader
import re
import time
class PdfGet():
def __init__(self):
self.initialize()
def initialize(self):
while True:
raw_args = input('Welcome to PdfGet...\n***Please Enter Arugments (infile,outfile,start_page,end_page) OR type "quit" to exit***\n').strip()
if raw_args.lower() == 'quit':
break
print("Converting Pdf...")
self.args = re.split(r',| ',raw_args)
self.opener(*self.args[0:1])
if len(self.args)== 4:
self.pageoutput(*self.args[1:])
elif len(self.args) == 3:
self.pageoutput(*self.args[1:3])
else:
self.pageoutput(*self.args[1:2])
print("Successfuly Converted!")
nextiter = input('Convert Another PDF? (Type "yes" or "no")').lower()
if nextiter == 'no':
break
def opener(self,infile):
self.output = PdfFileWriter()
self.pdf = PdfFileReader(open(infile, "rb"))
self.pagenum = self.pdf.getNumPages()
self.lastpage = self.pagenum+1
print(self.lastpage)
def pageoutput(self,outfile,start_page=0,end_page=self.lastpage):
for i in range (int(start_page)-1,int(end_page)):
self.output.addPage(self.pdf.getPage(i))
outputStream = open(outfile, "wb")
self.output.write(outputStream)
outputStream.close()
if __name__ == "__main__":
PdfGet()
time.sleep(5)
谢谢修复它!我应该更详细地搜索,因为显然我的错误很常见,我认为我以前使用self.sth作为默认参数,所以我从来没有想过这是问题所在。 – THX1138
如果你认为是这样的话,请考虑标记为答案:) –