Nov-24-2019, 08:31 AM
The following worked for me (changes on line 1, 22, 24):
import argparse, os, pdftitle, re, sys parser = argparse.ArgumentParser(description='Generate filenames from PDF titles.') parser.add_argument('path', help='Starting folder path') parser.add_argument('-r', '--rename', action='store_true', help='Rename files (otherwise just display)') args = parser.parse_args() def pdf_recurse(SrcFolder): for FileName in os.listdir(SrcFolder): FilePath = SrcFolder + '\\' + FileName if os.path.isdir(FilePath): pdf_recurse(FilePath) else: FileExt = FilePath[-3:] if FileExt.lower() == 'pdf': PdfTitle = "" try: PdfTitle = pdftitle.run(FilePath) except: print(f"Unexpected exception: {sys.exc_info()[0]}") print(FilePath) # print("an exception occurred") if PdfTitle == "" or PdfTitle == 1: print(FilePath) print("Could not read") else: NewName = new_name(PdfTitle, FileName) if NewName != "" and NewName != FileName: print(FilePath) print(NewName) if args.rename: os.rename(r'' + str(FilePath), r'' + SrcFolder + '\\' + NewName) def new_name(ReadTitle, FileName): if len(ReadTitle) < 6: return "" Match = re.search('(iptc|spe)[\s\-]{0,1}[0-9]+' , FileName, re.IGNORECASE) if Match != None: return "" if len(ReadTitle) > 72: ReadTitle = ReadTitle[:72] NewName = re.sub('[^\w_.)( -]', '', ReadTitle) + '.pdf' return NewName pdf_recurse(args.path)results (replaced part of path to protect privacy):
Output:Unexpected exception: <class 'TypeError'>
/.../pdf/OCR+ConvertedNov4_2014TownElectionReturns\AnsoniaNew.pdf
/.../pdf/OCR+ConvertedNov4_2014TownElectionReturns\AnsoniaNew.pdf
Could not read
Unexpected exception: <class 'TypeError'>
/.../pdf/OCR+ConvertedNov4_2014TownElectionReturns\Ansonia.pdf
/.../pdf/OCR+ConvertedNov4_2014TownElectionReturns\Ansonia.pdf
Could not read
Unexpected exception: <class 'TypeError'>
/.../pdf/OCR+ConvertedNov4_2014TownElectionReturns\AshfordNew.pdf
/.../pdf/OCR+ConvertedNov4_2014TownElectionReturns\AshfordNew.pdf
Could not read
Unexpected exception: <class 'TypeError'>
/.../pdf/OCR+ConvertedNov4_2014TownElectionReturns\Andover.pdf
/.../pdf/OCR+ConvertedNov4_2014TownElectionReturns\Andover.pdf
Could not read
Unexpected exception: <class 'TypeError'>
/.../pdf/OCR+ConvertedNov4_2014TownElectionReturns\Ashford.pdf
/.../pdf/OCR+ConvertedNov4_2014TownElectionReturns\Ashford.pdf
Could not read
Unexpected exception: <class 'TypeError'>
/.../pdf/OCR+ConvertedNov4_2014TownElectionReturns\AndoverNew.pdf
/.../pdf/OCR+ConvertedNov4_2014TownElectionReturns\AndoverNew.pdf
Could not read
Unexpected exception: <class 'TypeError'>
/.../pdf/OCR+ConvertedNov4_2014TownElectionReturns\AvonNew.pdf
/.../pdf/OCR+ConvertedNov4_2014TownElectionReturns\AvonNew.pdf
Could not read
Unexpected exception: <class 'TypeError'>
/.../pdf/OCR+ConvertedNov4_2014TownElectionReturns\Avon.pdf
/.../pdf/OCR+ConvertedNov4_2014TownElectionReturns\Avon.pdf
Could not read