Vielen Dank für Ihre Unterstützung: SemperVideo.de/... Fragen und Antworten auf / sempervideo www.patreon.com... amzn.to/37WtJq5 github.com/RPi... github.com/RPi...
Was ich nicht verstehe ist, warum machst du in der for Schleife nicht ein "for page in pdf_inhalt.pages:" und dann ein "text = page.extract_text()"? Dann brauchst du das mit der pdf_seitenzahl usw. gar nicht. Abgesehen davon das du das erste with nicht brauchst, aber das wurde ja schon geschrieben.
Wenn ich im Output kein encoding spezifiziere, werden keine Umlaute angezeigt, ich erhalte anders als der Sprecher offenbar eine ASCII-Datei. Warum geht das beim Sprecher automatisch?
Was ich nicht ganz verstanden habe: bisher wurden die Dateien, mit den gearbeitet wurde so geöffnet: with open(dateiname, 'rb') as datei . Danach wurde dann immer mit der Variablen, die durch das as definiert wurde, weitergearbeitet. In diesem Teil verwendest Du nicht pdfDatei sondern die Variable dateiname. Warum?
Hätte er das mit einer IDE gemacht hätte er das vermutlich gesehen. Aber ja das hast du richtig erkannt, macht keinen Sinn hier ein with zu verwenden wenn das eingelesene nicht verwendet wird. Im Pypi steht auch das der 'dateiname' reicht um das PDF einzulesen, also ein vorabladen ist nicht notwendig.
Die ganze Zeile „with open(Dateiname, ‘rb’) as pdfDatei“ kann man sich entweder sparen, weil man die Variable pdfDatei eh nicht nutzt. Alternativ kann man die Variable pdfDatei auch an Stelle von dateiname als Parameter in PyPDF2.PdfReader() werfen. Funktioniert beides. Das ist im Video wahrscheinlich nicht aufgefallen, könnte aber woanders für hochgezogene Augenbrauen sorgen 😅
Über welche Datenwege könnte sich eine Malware in einer PDF verstecken? Wenn man das weiß könnte man ja eigentlich einen PDF-Cleaner bauen, welcher eine PDF einliest und eine neue PDF generiert, wo alles drin ist AUSSER Malware (z.B. ohne ausführbare Makros, angehängte Dateien, eingebettete Dateien, verlinkte Dateien, verlinkte Websites, und was sonst so möglich ist in der on-the-fly-generierung von schadhaftem Verhalten) - bis man am Ende einfach nur noch eine statische Datei hat mit Informationen - Text (idealerweise noch formatiert) und Bild (ohne dynamischen nachlade-Schnickschnack oder Überladung&Exploit der Bilddarstellungsverarbeitung). Heute kann/darf man ja nichts mehr trauen.
Uhhh, ich hab was gelernt: Ich hab angenommen, dass er einen Fehler im zweiten Dateiaufruf "with open(...txt...)" wirft, weil die Variable pdf_inhalt nicht definiert wäre. Aber es sieht so aus, als würde sie aus dem Scope des ersten "with open(...pdf...)" hinaus bestehen. Bei Funktionen gibt es ja auch lokale Variablen, deren Speicherreservierung nach dem Verlassen wieder freigegeben wird und nicht mehr zugreifbar sind. Ist hier also nicht der Fall. Danke also für den Tipp. 😂 Hab mich nämlich letztens beim Coden gefragt, wieso ich jetzt ne Variable vor dem "with" definieren müsste, weil man häufig ja nur kurz eine Datei öffnet und dann alles in diese Variable schreibt, die Datei schließt und mit dem Speicher arbeitet. Geht anscheinend auch im with-Block. Aber auch das eigentliche Thema des Videos ist super. 👌
Vielleicht könnte sich da mal jemand zu äußern, ich benutze immer mindestens Doppelbuchstaben für schleifen variablen also ii statt i, kann man mit der Volltextsuche hinterher besser wiederfinden oder ersetzen finde ich...
das bleibt natürlich dir überlassenn. wenn du damit besser zurecht kommst, sagt niemand was. ich versuche den variablen immer sinnvolle namen zu geben (auch wenn es "nur" zählvariablen sind) - zum beispiel for page in pages: do_something()
(Vorausschicken muss ich für meine Gegenfrage, dass ich erst vor wenigen Tagen angefangen bin, Python meine erste Sprache und diese Serie mein erster Ansatz ist, diese zu lernen. Ich gehöre also genau zur Zielgruppe und bin daher noch sehr naiv unterwegs. Ich schreibe also keine neunmalklugen Spitzfindigkeiten, sondern ehrliche Lernfragen.) Warum braucht man Suchen und Ersetzen, wenn man Variablennamen mit F2 ändern kann? Das schützt einen doch automatisch davor, mit Suchen und Ersetzen aus Versehen jeden Buchstaben in etwas anderes zu ändern?
@@JoergWessels also die Sache mit F2 ist ja nun eine Funktion deines Editors, funktioniert also nur wenn du immer mit dem gleichen Editor an deinem Programm arbeitest. Ich habe eine Zeitlang an einem großen Beschleunigerzentrum gearbeitet. Dort liefen viele meiner Skripte/ Programme auf vielen verschiedenen Rechnern und Betriebssystemen. Und ich habe sie auch von vielen Computern aus mal anpassen müssen. Nicht immer war dort meine lieblings IDE bzw. mein lieblings Editor auf allen Geräten installiert. - Kam z.b. durchaus mal vor , dass ich per SSH auf irgendeinem Server eingeloggt war und die Änderung auf der Konsole über z.b. sowas wie Nano (Konsolen basierter Texteditor) vorgenommen habe. Oder kurzgesagt man hat halt nicht immer eine tolle intergierte Entwicklungsumgebung (IDE) wie z.b. Spyder zur Verfügung.
@@justyours8766 interessante Einblicke in professionelle Entwicklungsarbeit und das unter einem Anfängervideo. Danke! Schade, dass sich keine anderen Profis hier äußern oder zumindest der Sprecher selbst
(Vorausschicken muss ich für meine Gegenfrage, dass ich erst vor wenigen Tagen angefangen bin, Python meine erste Sprache und diese Serie mein erster Ansatz ist, diese zu lernen. Ich gehöre also genau zur Zielgruppe und bin daher noch sehr naiv unterwegs. Ich schreibe also keine neunmalklugen Spitzfindigkeiten, sondern ehrliche Lernfragen.) Wie würde deine Lösung dann aussehen?
Kennt jemand ein gutes Tutorial für Synology NAS+Router (RT6600xa). Sobald ich das NAS, via Ethernet Kabel, an den Router schliesse, kann ich von ausserhalb nicht mehr darauf zugreifen. Das Modem lässt sich nicht als Bridge einstellen. Die Lösung wäre dann doch Port Forwarding? DMZ habe ich gelesen hilft auch, sagt mir aber nichts.
Im Allgemeinen hast du damit recht. DMZ würde einen Rechner definieren, an dem der Router prinzipiell ALLES forwarded, sodass es den Anschein hat, jener Rechner würde direkt im Internet hängen
@@nemiw4429 Kommt darauf an. Allgemein sicher, router-spezifisch und geräte-spezifisch leider nicht. Als DMZ gibst du eine INTERNE IP Adresse eines Servers an, der komplett von außen erreichbar sein soll, mit der IP Adresse, mit der du im Internet unterwegs bist. Port Forwarding ist, nun ja....host- und portspezifisch und somit sehr feingranular. Ein Punkt wundert mich noch: Warum "nicht mehr"? Hoffe jedenfalls, ich konnte dir schon mal grob die Richtung aufzeigen.
@@nemiw4429 Achso, einen kleinen Beitrag habe ich noch...bitte vorsichtig mit DMZs und Bridging sein. Der Rechner, der dann entsprechend von außen ansprechbar wird, sollte allgemein gut abgesichert sein, da Sicherheitsfunktionen (beim DMZ stark, beim Brdiging noch stärker) von deiner Kabelbox dann nicht mehr aktiv sein werden.
@@manuelengel3680 habe keine Benachrichtigung erhalten für die erste msg, danke. Werd ich gleich durchlesen. Bin Informatiker, gehöre aber nicht zur Netzwerk-Elite 😔 und konnte im Studium nur kurz und in 2 Fächer, über 4 Jahre, am Thema schnuppern. Bin lediglich ein Applikations-Gauner.