Zur Zeit komprimiere ich die von der Firma gescannten Bilddaten, und wenn ich sie mit nach Hause nehme und erweitere, sind die Zeichen aus irgendeinem Grund verstümmelt ... Welche Erfahrungen hast du? ** Ich habe! (Half-Gile) ** Da jedoch nur die unerwartete Seriennummer erhalten bleibt, ohne verstümmelt zu werden, ist es häufig der Fall, dass die Reihenfolge der Dateien verstanden werden kann. (Beispiel æ– ‡ å - 000.jpg, æ– ‡ ås001.jpg) Wenn Sie nur dieses verstümmelte Teil aus dem Dateinamen entfernen und eine schöne Seriennummerndatei erstellen können, sieht es gut aus und ist für spätere Arbeiten hilfreich. Da es sich um ungefähr 100 Datenblätter handelte, wäre es mühsam, sie zu ändern, und ich entschied mich, ein leichtes Python-Skript zu erstellen. Ich habe übrigens versucht, Bilddaten mit einem Tastendruck in ein PDF zu konvertieren.
Zu dieser Zeit habe ich ** Pillow ** für die Bildverarbeitung und ** PyPDF2 ** für die PDF-Konvertierung verwendet, daher möchte ich dies erläutern.
Das Skript ist unter [github] aufgeführt (https://github.com/tubone24/fileName2SerialNumber). Informationen zur Verwendung des Skripts finden Sie unter READ ME.
Ich habe es in Eile geschrieben, es ist also ein chaotisches Skript, aber es besteht aus den folgenden Funktionen
Ich werde es unten kurz vorstellen. Bitte überspringen Sie es, da es sich um redundanten Inhalt handelt name2number(folderpass, digits, extension) Aus den Bildern im Ordnerpfad, die die als Argument empfangenen Bilddaten enthalten (nur die durch die Erweiterung angegebenen) Die Dateinamen werden aus dem nicht verstümmelten Teil (000 in æ– ‡ å - 000.jpg) serialisiert. Das Betriebssystem wird verwendet, um den Dateinamen neu zu schreiben, und das Modul re wird verwendet, um reguläre Ausdrücke zu verarbeiten. Der Rückgabewert ist ein Array von Dateinamen, für die die Verarbeitung übersprungen wurde.
changeNameHand(existfiles) Der Rückgabewert von name2number ist ein Array, das die Dateinamen enthält, die von der Seriennummer abgedeckt werden, und das Umschreiben des Dateinamens wird übersprungen. Wenn diese Funktion es als Argument empfängt, hört sie interaktiv auf den Dateinamen in der Standardeingabe / -ausgabe und schreibt ihn neu. Das Betriebssystem wird verwendet, um den Dateinamen neu zu schreiben, und das Modul re wird verwendet, um reguläre Ausdrücke zu verarbeiten. Darüber hinaus wird das Pillow (PIL) -Modul für die Bildanzeige zur Bildbestätigung verwendet.
addstr(before, after, digits, extension) Diese Funktion fügt die Zeichenfolge des Arguments vor der Seriennummer und die Zeichenfolge des Arguments nach der Seriennummer hinzu. Ich benutze es, wenn die Seriennummer allein nicht geschmackvoll ist Das Betriebssystem wird verwendet, um den Dateinamen neu zu schreiben, und das Modul re wird verwendet, um reguläre Ausdrücke zu verarbeiten.
image2pdf(filename, digits, extension, removeflug) Verwenden Sie Pillow und PyPDF2, um die Bilddaten im aktuellen Verzeichnis in einer einzigen PDF-Datei zu kombinieren. Ich werde später im Detail erklären
makeZip(filename, flug) Zippen Sie die Daten im aktuellen Verzeichnis. Ich verwende das Zipfile-Modul.
main() Eine Funktion zum Abrufen von Befehlszeilenargumenten. Ich verwende das argparse-Modul, um Befehlszeilenargumente abzurufen.
fileName2SerialNumber.py
def image2pdf(filename, digits, extension, removeflug):
u"""
Funktion zum Konvertieren von Bilddateien in PDF
"""
if (extension != ".jpg " and ".png " and ".gif"): #Spielen Sie, wenn kein Bild
print("Nicht unterstützte Bilddateien! jpg, png,Onacious mit gif")
sys.exit(1)
fileWriter = PdfFileWriter()
files = os.listdir()
ext = re.compile(extension)
files.sort()
count = 1
removefiles = []
for file in files:
num = re.search('\\d{' + str(digits) +'}', file)
if (num == None):
pass
else:
if (ext.search(file) and num):
image = PIL.Image.open(file)
pdfFile = str(file).replace(extension, ".pdf")
image.save(pdfFile, "PDF", resolution = 100.0)
with open(pdfFile, "rb") as f:
fileReader = PdfFileReader(f, "rb")
pageNum = fileReader.getNumPages()
for i in range(pageNum):
fileWriter.addPage(fileReader.getPage(i))
print("%s%Schreiben Sie auf Seite d" % (str(file), count))
count += 1
removefiles.append(pdfFile)
if (removeflug):
removefiles.append(file)
with open(filename, "wb") as outputs:
fileWriter.write(outputs)
print("-------------------------------------------------------")
print("Fertiges Schreiben! Dateiname%s \n" % filename)
for file in removefiles:
os.remove(file)
print("Dateiname%Gelöschte s" % str(file))
print("--------------------------------------------------------")
print("das Ende! Ergebnisse: %s" % filename)
return None
Pillow ist ein Modul zur Bildverarbeitung in Python. Sie können mit PIP eingeben.
So öffnen Sie eine Datei als Bild
python
image = PIL.Image.open(file)
Wird besorgt.
Dieses Mal möchte ich das Bild als PDF speichern, damit ich es in PDF umschreiben kann. Deshalb
python
image.save(image, "PDF", resolution = 100.0)
Sie können das Bild im PDF-Format speichern, indem Sie dies tun. Es ist auch möglich, die Bildqualität frei zu ändern, indem Sie den Teil "PDF" auf einen anderen Bildstandard ändern oder die Auflösung auf einen anderen Wert als 100 einstellen. Bei der Konvertierung in das PDF-Format muss die Erweiterung der Bilddatei vor dem Lesen der Bilddatei in PDF umgeschrieben werden. Also in diesem Skript
python
pdfFile = str(file).replace(extension, ".pdf")
Die Erweiterung wird geändert als.
Auch wenn in dieser Funktion nicht verwendet, um ein Bild anzuzeigen Nach dem Öffnen des Bildes mit PIL.image.open ()
python
image.show()
Es kann mit angezeigt werden.
PyPDF2 ist ein praktisches Modul, mit dem Sie mehrere PDF-Dateien zu einer kombinieren und Textdaten aus der PDF-Datei extrahieren können. Sie können PIP verwenden.
Erstellen Sie zunächst eine Instanz zum Exportieren der Datei.
python
fileWriter = PdfFileWriter()
Die Instanz zum Lesen der PDF-Datei ist ebenfalls
python
fileReader = PdfFileReader(open(pdffile, "rb"), "rb")
Erstellen mit. Da das Öffnen der Datei beteiligt ist, verwenden Sie mit
python
with open(pdfFile, "rb") as f:
fileReader = PdfFileReader(f, "rb")
Ich denke, dass es weniger mühsam ist, dies zu tun.
So überprüfen Sie die aktuelle Gesamtzahl der Seiten
python
pageNum = fileReader.getNumPages()
Die Anzahl der Seiten wird in pageNum eingegeben.
So fügen Sie eine PDF-Seite hinzu
python
fileWriter.addPage(fileReader.getPage(pageNumber))
Wird besorgt. Gibt das Seitenobjekt mit der von getpage angegebenen Seitenzahl (Anzahl der Seiten) zurück. Die Seite wird der angegebenen Nummer hinzugefügt, indem Sie Seite mit dem Seitenobjekt als Argument hinzufügen.
Nach Abschluss der Bearbeitung wird es schließlich als PDF-Datei exportiert.
Für den Export
python
fileWriter.write(open(filename, "wb")
Sie können mit schreiben. Da wir die open-Funktion verwenden, verwenden Sie die with-Anweisung
python
with open(filename, "wb") as outputs:
fileWriter.write(outputs)
Ich denke, dass es weniger mühsam ist, dies zu tun.
Verwenden Sie Pillow und PyPDF2, um die Arbeitseffizienz zu verbessern!
Recommended Posts