Mehr

Python-Skript zum Hinzufügen mehrerer Felder zu Feature-Classes

Python-Skript zum Hinzufügen mehrerer Felder zu Feature-Classes


Ich versuche, jeder Feature-Class in einer GDB 2 (mehrere) Felder hinzuzufügen. Ich habe das Skript auf Basis von Python-Skript erstellt, um Felder zu Feature-Classes hinzuzufügen.

Ich habe das Gefühl, etwas zu verpassen und es nicht zu verstehen.

import arcpy, os arcpy.env.workspace = r'Z:project… gdb' für fc in arcpy.ListFeatureClasses(): try: arcpy.AddField_management(fc, "Depth", "SHORT", field_length = 10) arcpy .AddField_management(fc, "OD", "SHORT", field_length = 10) mit arcpy.da.UpdateCursor(fc, "Depth", "OD") als Cursor: für Zeile im Cursor: row[0] = fc Cursor. updateRow(row) print "Working on {0}".format(fc) außer Ausnahme wie zB: print "Es ist ein Fehler aufgetreten ---> {0}".format(ex) print ("Feld hinzufügen abgeschlossen")

Sie müssen die Felder, die Sie einschließen möchten, in den Cursor innerhalb einer Liste oder eines Tupels platzieren. Wie du es jetzt hast, stellst du ein WHERE-Klausel von "OD".

arcpy.da.UpdateCursor(in_table, field_names, {where_clause}, {spatial_reference}, {explode_to_points}, {sql_clause})

Sie wollen:

mit arcpy.da.UpdateCursor(fc, ("Depth", "OD")) als Cursor:

Wie gesagt, ich verstehe nicht, was du damit vorhastReihe[0] = fc

Sie weisen dem Feld "DEPTH", das vom Datentyp Integer ist, einen Zeichenfolgenwert zu.

Wenn Sie jeder Feature-Class nur Felder hinzufügen möchten, sollte dieser Teil Ihres Codes funktionieren:

import arcpy arcpy.env.workspace = "Z:project… gdb" für fc in arcpy.ListFeatureClasses(): try: arcpy.AddField_management(fc, "Depth", "SHORT", field_length = 10) arcpy. AddField_management(fc, "OD", "SHORT", field_length = 10) außer Ausnahme wie zB: print "Es ist ein Fehler aufgetreten ---> {0}".format(ex) print("Feld hinzufügen beendet")

Ich mache das oft ohne Probleme. Der einzige Unterschied zwischen dem, was ich tue, und dem, was du tust, ist, dass ich das nicht benutze.daMauszeiger. ich benutzearcpy.UpdateCursorstattdessen. Also meiner würde so aussehen:

import arcpy, os arcpy.env.workspace = r'Z:project… gdb' für fc in arcpy.ListFeatureClasses(): try: arcpy.AddField_management(fc, "Depth", "SHORT", field_length = 10) arcpy .AddField_management(fc, "OD", "SHORT", field_length = 10) mit arcpy.UpdateCursor(fc) als Cursor: print "Working on {0}".format(fc) für Zeile im Cursor: row.FIELDNAMEHERE = fc #Ich vermute, du gibst hier den Namen der Ebene zu? cursor.updateRow(row) außer Ausnahme wie zB: print "Es ist ein Fehler aufgetreten ---> {0}".format(ex) print ("Feld hinzufügen abgeschlossen")

Meine übliche Art, den Code zu implementieren, ist:

layer = [#my list of layer here] für Layer in Layern: arcpy.AddField_management(layer, "NEWFIELD", "TEXT") rows = arcpy.UpdateCursor(layer) für Zeile in Zeilen: row.NEWFIELD = "my new value " rows.updateRow(row) del rows

Einführung in die Datenvisualisierung in Python

Datenvisualisierung ist die Disziplin, bei der versucht wird, Daten zu verstehen, indem sie in einen visuellen Kontext gestellt werden, damit Muster, Trends und Korrelationen aufgedeckt werden können, die sonst möglicherweise nicht erkannt werden.

Python bietet mehrere großartige Grafikbibliotheken, die mit vielen verschiedenen Funktionen ausgestattet sind. Egal, ob Sie interaktive, Live- oder hochgradig angepasste Plots erstellen möchten, Python hat eine hervorragende Bibliothek für Sie.

Um einen kleinen Überblick zu bekommen, hier einige beliebte Plotterbibliotheken:

  • Matplotlib:niedriges Niveau, bietet viel Freiheit
  • Pandas-Visualisierung:einfach zu bedienende Oberfläche, basierend auf Matplotlib
  • Meeresgeboren:High-Level-Schnittstelle, großartige Standardstile
  • ggplot:basiert auf ggplot2 von R, verwendet Grammatik der Grafik
  • Inhaltlich:kann interaktive Plots erstellen

In diesem Artikel erfahren Sie, wie Sie mit Matplotlib, Pandas-Visualisierung und Seaborn grundlegende Plots erstellen und einige spezifische Funktionen jeder Bibliothek verwenden. Dieser Artikel konzentriert sich auf die Syntax und nicht auf die Interpretation der Grafiken, die ich in einem anderen Blogbeitrag behandeln werde.

In weiteren Artikeln gehe ich auf interaktive Plotting-Tools wie Plotly ein, das auf D3 aufbaut und auch mit JavaScript verwendet werden kann.


13 Antworten 13

Dies funktioniert wirklich, habe ich viel Zeit damit verbracht, mehrere Varianten auszuprobieren.

Die msg['To'] muss ein String sein:

Während die Empfänger in sendmail (Absender, Empfänger, Nachricht) eine Liste sein müssen:

Sie müssen den Unterschied zwischen den sichtbar Adresse einer E-Mail und die Lieferung.

msg["To"] ist im Wesentlichen das, was auf dem Brief gedruckt wird. Es hat eigentlich keine Wirkung. Abgesehen davon, dass Ihr E-Mail-Client, genau wie der normale Postbeamte, davon ausgeht, dass Sie die E-Mail an diesen senden möchten.

Die eigentliche Lieferung kann jedoch ganz anders ablaufen. Also du kann werfen Sie die E-Mail (oder eine Kopie) in den Briefkasten einer ganz anderen Person.

Dafür gibt es verschiedene Gründe. Beispielsweise Weiterleitung. Das Header-Feld An: ändert sich beim Weiterleiten nicht, die E-Mail wird jedoch in einem anderen Postfach abgelegt.

Der Befehl smtp.sendmail kümmert sich nun um die tatsächlich Lieferung. email.Message ist nur der Inhalt des Briefes, nicht die Lieferung.

Bei Low-Level-SMTP müssen Sie die Empfänger einzeln angeben, weshalb eine Liste von Adressen (ohne Namen!) die sinnvolle API ist.


Besonderheiten des Angebots

Konkret schlägt dieses PEP vor, dem to os Modul in der Standardbibliothek, Scandir, die als Argument eine einzelne, optionale Zeichenfolge verwendet:

Mögen listdir, Scandir ruft die Verzeichnis-Iteration des Betriebssystems auf Systemaufrufe, um die Namen der Dateien in der angegebenen Datei abzurufen Weg, aber es ist anders als listdir In zwei Wegen:

  • Anstatt bloße Dateinamen-Strings zurückzugeben, gibt es Lightweight zurück DirEntry Objekte, die die Dateinamenzeichenfolge enthalten und einfache Methoden bereitstellen, die den Zugriff auf die zusätzlichen Daten ermöglichen, die das Betriebssystem möglicherweise zurückgegeben hat.
  • Es gibt einen Generator anstelle einer Liste zurück, so dass Scandir fungiert als echter Iterator, anstatt sofort die vollständige Liste zurückzugeben.

scandir() ergibt a DirEntry Objekt für jede Datei und jedes Unterverzeichnis in Weg. So wie listdir, das '.' und '..' Pseudo-Verzeichnisse werden übersprungen und die Einträge werden in systemabhängiger Reihenfolge ausgegeben. Jeder DirEntry Objekt hat die folgenden Attribute und Methoden:

  • Name: der Dateiname des Eintrags, relativ zum Scandir Weg Argument (entspricht den Rückgabewerten von os.listdir)
  • Weg: der vollständige Pfadname des Eintrags (nicht unbedingt ein absoluter Pfad) -- das Äquivalent von os.path.join(scandir_path, entry.name)
  • inode(): Gibt die Inode-Nummer des Eintrags zurück. Das Ergebnis wird im Cache zwischengespeichert DirEntry Objekt, Verwendung os.stat(entry.path, follow_symlinks=False).st_ino um aktuelle Informationen abzurufen. Unter Unix ist kein Systemaufruf erforderlich.
  • is_dir(*, follow_symlinks=True): ähnlich zu pathlib.Path.is_dir(), aber der Rückgabewert wird im Cache zwischengespeichert DirEntry Objekt erfordert in den meisten Fällen keinen Systemaufruf Folge symbolischen Links nicht, wenn follow_symlinks ist falsch
  • is_file(*, follow_symlinks=True): ähnlich zu pathlib.Path.is_file(), aber der Rückgabewert wird im Cache zwischengespeichert DirEntry Objekt erfordert in den meisten Fällen keinen Systemaufruf Folge symbolischen Links nicht, wenn follow_symlinks ist falsch
  • is_symlink(): ähnlich zu pathlib.Path.is_symlink(), aber der Rückgabewert wird im Cache zwischengespeichert DirEntry Objekt erfordert in den meisten Fällen keinen Systemaufruf
  • stat(*, follow_symlinks=True): mögen os.stat(), aber der Rückgabewert wird im Cache zwischengespeichert DirEntry Objekt erfordert keinen Systemaufruf unter Windows (außer Symlinks) Folgen Sie keinen symbolischen Links (wie os.lstat()) Wenn follow_symlinks ist falsch

Alle Methoden kann in einigen Fällen Systemaufrufe durchführen und daher möglicherweise erhöhen OSFehler -- Weitere Informationen finden Sie im Abschnitt "Hinweise zur Ausnahmebehandlung".

Das DirEntry Attribut- und Methodennamen wurden so gewählt wie im neuen Pfadlib Modul nach Möglichkeit aus Konsistenzgründen. Der einzige Unterschied in der Funktionalität besteht darin, dass die DirEntry Methoden cachen ihre Werte nach dem ersten Aufruf auf dem Eintragsobjekt.

Wie die anderen Funktionen im os Modul, scandir() akzeptiert entweder ein bytes- oder str-Objekt für die Weg -Parameter und gibt die DirEntry.name und DirEntry.Pfad Attribute mit dem gleichen Typ wie Weg. Wie auch immer es ist wärmstens empfohlen den Typ str verwenden, da dies die plattformübergreifende Unterstützung für Unicode-Dateinamen gewährleistet. (Unter Windows sind Byte-Dateinamen seit Python 3.3 veraltet).


Präzision numerischer Lösungen

Die meisten nichtlinearen Gleichungssysteme haben jedoch keine geeignete analytische Lösung, daher ist die Verwendung von SymPy wie oben großartig, wenn es funktioniert, aber nicht allgemein anwendbar. Deshalb suchen wir am Ende nach numerischen Lösungen, wenn auch mit numerischen Lösungen: 1) Wir haben keine Garantie, dass wir alle Lösungen oder die "richtige" Lösung gefunden haben, wenn es viele gibt. 2) Wir müssen eine erste Schätzung abgeben, was nicht immer einfach ist.

Wenn Sie akzeptiert haben, dass wir numerische Lösungen wie fsolve wollen, reicht normalerweise alles, was Sie brauchen. Für diese Art von Problem wird SymPy wahrscheinlich viel langsamer sein, aber es kann etwas anderes bieten, das die (numerischen) Lösungen genauer findet:


Nicht-CPython-Implementierungen

    Die Sprache sagt nichts darüber aus, welche Art von Atomarität eine Operation hat. Dass dict-Operationen in CPython heute oft Thread-sicher sind, dient hauptsächlich dazu, Abstürze auf niedriger Ebene zu vermeiden.

    Ich würde sagen, das ist für Python notwendig. Es gibt sehr wenig, was Sie mit einem halb zerstörten Objekt sinnvoll machen können. Was Sie tun können, können Sie auch tun, ohne halbzerstörten Gegenständen ausgesetzt zu sein. --Rhamphoryncus

        Sie wirken bewusst vage. Java unterscheidet finalisierte von nicht finalisierten Objekten, und ein einzelner Finalizer wird in Bezug auf nicht finalisierte Objekte bestellt. Der Haken daran ist, dass es in Bezug auf andere Finalizer nicht geordnet ist, sodass Sie so programmieren müssen, als ob sie bereits gelöscht wären. In der Praxis bedeutet dies, Finalizer zu vermeiden, wenn sie nicht unbedingt erforderlich sind, und sie dürfen gegebenenfalls nicht voneinander abhängig sein.

      API-Kompatibilität im Detail

      Es ist kaum glaubwürdig, dass CPython eines Tages machen könnte tp_traverse obligatorisch für zeigertragende Typen, das Hinzufügen von Unterstützung für Schreibbarrieren oder Stack-Buchhaltung zur Python/C-API scheint äußerst unwahrscheinlich.

      Ein weiteres Problem in diesem Bereich ist, dass bestehende C-Erweiterungen von den GIL-Garantien abhängig sind. Sie gehen davon aus, dass beim Aufrufen von Erweiterungscode alle anderen Threads gesperrt werden. Wenn eine Erweiterung mit einer Thread-Umgebung umgehen muss, meldet sie sich explizit an (durch Freigabe der GIL). Daher muss jeder potenzielle GIL-Ersatz standardmäßig GIL-ähnliche Garantien bieten. Threading muss für Erweiterungen aktiviert bleiben.


      Python-Skript zum Hinzufügen mehrerer Felder zu Feature-Classes - Geographic Information Systems

      Coursera ist wohl führend in massiv offene Online-Kurse (MOOC) mit einer Auswahl von mehr als 300 Klassen von 62 verschiedenen Institutionen (Stand Februar 2013). Großzügige Beiträge von Pädagogen und Institutionen ermöglichen vielen, die sie sich sonst nicht leisten könnten, exzellente Bildung. Es gibt sogar Non-Profit-Organisationen mit "Fuß auf dem Boden" in abgelegenen Gegenden der Welt, die helfen, den Reichtum zu verbreiten (siehe das Feedback von Tunapanda unten).

      Dieses Skript erleichtert das Herunterladen von Unterrichtsressourcen (z. B. Videos, ppt usw.) für Coursera-Klassen. Bei einem oder mehreren Klassennamen und Kontoanmeldeinformationen erhält es Wochen- und Klassennamen von der names Vorträge Seite und lädt dann das zugehörige Material in entsprechend benannte Dateien und Verzeichnisse herunter.

      Warum ist das hilfreich? Ein Dienstprogramm wie wget kann funktionieren, hat jedoch die folgenden Einschränkungen:

      1. Videonamen enthalten Zahlen, die jedoch nicht der tatsächlichen Reihenfolge entsprechen. Das manuelle Umbenennen ist ein Problem, das am besten Computern überlassen wird.
      2. Die Verwendung von Namen von der Lehrplanseite bietet informativere Namen.
      3. Die Verwendung von wget in einer for-Schleife nimmt zusätzliche Videos auf, die nicht gepostet/verknüpft sind, und dies sind manchmal Duplikate.

      Browsererweiterungen wie DownloadThemAll ist eine andere Möglichkeit, aber Coursera-dl bietet mehr Funktionen, wie beispielsweise entsprechend benannte Dateien.

      Diese Arbeit wurde ursprünglich teilweise von youtube-dl inspiriert, von dem ich viele andere gute Videos heruntergeladen habe, z. B. die von der Khan Academy.

      • Unterstützung für alle Arten von Kursen (d. h. "Alte Plattform" / zeitbasierte sowie "Neue Plattform" / On-Demand-Kurse).
      • Absichtlich detaillierte Namen, damit es auf den meisten Schnittstellen (z. B. VLC oder MX Video auf Android-Geräten) richtig angezeigt und sortiert wird.
      • Regex-basierte Filter für Abschnitt (Woche) und Vorlesungsnamen, um nur bestimmte Ressourcen herunterzuladen.
      • Dateiformaterweiterungsfilter, um die gewünschten Ressourcentypen zu erfassen.
      • Anmeldeinformationen werden in der Befehlszeile oder aus der .netrc-Datei akzeptiert.
      • Aus der Datei "coursera-dl.conf" geladene Standardargumente.
      • Kernfunktionalität getestet auf Linux, Mac und Windows.

      Coursera-dl darf nur für Ihr Material verwendet werden, das Coursera Ihnen zum Download zur Verfügung stellt.

      Wir empfehlen keine Nutzung, die gegen ihre Nutzungsbedingungen verstößt. Ein relevanter Auszug:

      "[. ] Coursera gewährt Ihnen eine persönliche, nicht ausschließliche, nicht übertragbare Lizenz für den Zugriff und die Nutzung der Sites. Sie dürfen Material von den Sites nur für Ihren persönlichen, nicht kommerziellen Gebrauch herunterladen. Sie dürfen anderweitig nicht kopieren oder reproduzieren , Material weiterzusenden, zu verteilen, zu veröffentlichen, kommerziell zu verwerten oder anderweitig zu übertragen, noch dürfen Sie das Material modifizieren oder abgeleitete Werke davon erstellen."

      Coursera-dl erfordert Python 2 oder Python 3 und ein kostenloses Coursera-Konto, das in der gewünschten Klasse eingeschrieben ist. (Ab Februar 2020 testen wir automatisch die Ausführung des Programms mit den Python-Versionen 2.7, Pypy, 3.6, 3.7, 3.8 und 3.9).

      Notiz: Wir stark empfehlen die Verwendung eines Python 3-Interpreters (3.9 oder höher).

      Stellen Sie auf jedem Betriebssystem sicher, dass der Speicherort der ausführbaren Python-Datei zu Ihrer PATH-Umgebungsvariablen hinzugefügt wird und, sobald Sie die Abhängigkeiten installiert haben (siehe nächster Abschnitt), für a Basic verwenden, müssen Sie das Skript aus dem Hauptverzeichnis des Projekts aufrufen und ihm das Wort python voranstellen. Sie können auch erweiterte Funktionen des Programms verwenden, indem Sie sich den Abschnitt "Ausführen des Skripts" dieses Dokuments ansehen.

      Notiz: Sie müssen dem Honour of Code der jeweiligen Kurse, die Sie mit Coursera-dl nutzen möchten, bereits (manuell) zugestimmt haben.

      Empfohlene Installationsmethode für alle Betriebssysteme

      Geben Sie von einer Befehlszeile (vorzugsweise aus einer virtuellen Umgebung) einfach den Befehl aus:

      Dadurch wird die neueste veröffentlichte Version des Programms aus dem Python Package Index (PyPI) zusammen mit . heruntergeladen alle die notwendigen Abhängigkeiten. An diesem Punkt sollten Sie bereit sein, es zu verwenden.

      Wenn dies nicht funktioniert, weil Ihre Python 2-Version zu alt ist (z. B. 2.7.5 auf Ubuntu 14.4), versuchen Sie:

      Anmerkung 1: Wir empfehlen Ihnen dringend nicht Installieren Sie das Paket global auf Ihrem Computer (d. h. mit Root-/Administratorrechten), da die installierten Module mit anderen Python-Anwendungen, die Sie auf Ihrem System installiert haben, in Konflikt geraten können (oder sie mitcoursera-dl stören können). Verwenden Sie lieber die Option --user to pip install , wenn Sie dies benötigen.

      Anmerkung 2: Wie bereits erwähnt, wir stark empfehlen die Verwendung eines neuen Python 3-Interpreters (z. B. 3.9 oder höher), da Python 3 SSL/TLS (für sichere Verbindungen) besser unterstützt als frühere Versionen.
      Wenn Sie Python 2 verwenden müssen, stellen Sie sicher, dass Sie mindestens Python 2.7.9 haben (höhere Versionen sind in Ordnung).
      Andernfalls können Sie weiterhin Coursera-dl verwenden, müssen jedoch das zusätzliche Paket ndg-httpsclient installieren, was eine Kompilierung (zumindest auf Linux-Systemen) erfordern kann.

      Alternative Möglichkeiten zum Installieren fehlender Abhängigkeiten

      Wir empfehlen Ihnen dringend, Python-Pakete mit pip zu installieren, da dies die derzeit bevorzugte Methode ist, sofern nicht von einem der Projektmitglieder anders angegeben (z. B. beim Testen oder Debuggen einer neuen Funktion oder beim Verwenden des Quellcodes direkt aus unserem git Repository). Wenn Sie pip verwenden, können Sie alle Abhängigkeiten direkt aus der Anforderungsdatei mit pip install -r requirements.txt installieren.

      Alternative Installationsmethode für Unix-Systeme

      Wir empfehlen dringend, Coursera-dl und alle seine Abhängigkeiten so zu installieren, dass dies möglich ist nicht den Rest Ihrer Python-Installation stören. Dies wird durch die Erstellung von a . erreicht virtuelle Umgebung, oder "virtualenv".

      Für die Ersteinrichtung in einem Unix-ähnlichen Betriebssystem gehen Sie bitte wie folgt vor (erstellen/adaptieren Sie zuerst das Verzeichnis /directory/where/I/want/my/courses ):

      Um weiter neue Videos aus Ihren Kursen herunterzuladen, führen Sie einfach Folgendes aus:

      Wir arbeiten daran, diesen gesamten Prozess so einfach wie möglich zu gestalten, aber um ältere Versionen von Python zu unterstützen und mit Coursera fertig zu werden, der SSLv3 deaktiviert, müssen wir ein paar zusätzliche Schritte unternehmen. Auf jeden Fall ist es höchst Es wird empfohlen, immer die neueste Version des Python-Interpreters zu installieren, die Sie können.

      Abhängigkeiten selbst installieren

      Warnung: Diese Methode wird nicht empfohlen, es sei denn, Sie haben Erfahrung mit der Arbeit mit mehreren Python-Umgebungen.

      Sie können das pip-Programm verwenden, um die Abhängigkeiten selbst zu installieren. Sie sind alle in der Datei requirements.txt aufgelistet (und die zusätzlichen Abhängigkeiten, die für die Entwicklung benötigt werden, sind in der Datei requirements-dev.txt aufgeführt).

      Um diese Methode zu verwenden, gehen Sie wie folgt vor:

      Die zweite Zeile oben sollte nur benötigt werden, wenn Sie beabsichtigen, bei der Entwicklung zu helfen (und Hilfe ist immer willkommen) oder wenn ein Betreuer des Projekts Sie auffordert, zusätzliche Pakete für Debugging-Zwecke zu installieren.

      Wenn Sie die Abhängigkeiten selbst installiert haben, überprüfen Sie bitte noch einmal, bevor Sie Fehlerberichte einreichen, dass die Versionen Ihrer Module mindestens den Versionen entsprechen, die in der Datei requirements.txt (und ggf. Datei Requirements-dev.txt) aufgeführt sind.

      Wenn Sie möchten, können Sie diese Software in Docker ausführen:

      Das aktuelle Arbeitsverzeichnis für Coursera-dl ist /courses, alle Kurse werden dort heruntergeladen, wenn Sie nichts anderes angeben.

      python -m pip install Coursera-dl

      Stellen Sie sicher, dass der Python-Installationspfad zu den PATH-Systemumgebungsvariablen hinzugefügt wird. Diese finden Sie unter Systemsteuerung > System > Erweiterte Systemeinstellungen > Umgebungsvariablen.

      Oder wenn Sie eingeschränkte Installationsberechtigungen haben und Python unter AppData installiert haben, fügen Sie dies Ihrem PATH hinzu.

      Coursera-dl kann jetzt über die Kommandozeile oder Powershell ausgeführt werden.

      Erstellen Sie ein Konto bei Coursera

      Wenn Sie noch keinen besitzen, erstellen Sie ein Coursera-Konto und melden Sie sich für einen Kurs an. Eine Liste der Kurse finden Sie unter https://www.coursera.org/courses.

      Eine vollständige, aktuelle Referenz zu den von diesem Dienstprogramm unterstützten Laufzeitoptionen finden Sie unter Coursera-dl --help.

      Führen Sie das Skript aus, um die Materialien herunterzuladen, indem Sie Ihre Coursera-Kontoanmeldeinformationen angeben (z. B. E-Mail-Adresse und Passwort oder a

      /.netrc-Datei), die Klassennamen sowie alle zusätzlichen Parameter:

      Wenn Sie Ihr Passwort nicht als Klartext in die Befehlszeile eingeben möchten, können Sie das Skript ohne die Option -p verwenden. In diesem Fall werden Sie nach der Ausführung des Skripts zur Eingabe des Kennworts aufgefordert.

      Hier sind einige Beispiele für den Aufruf von Coursera-dl über die Befehlszeile:

      Notiz: Wenn Ihr ls-Befehl mit einem Alias ​​versehen ist, um eine farbige Ausgabe anzuzeigen, können Probleme auftreten. Achten Sie darauf, den ls-Befehl zu maskieren (verwenden Sie ls ), um sicherzustellen, dass keine Sonderzeichen an das Skript gesendet werden.

      Beachten Sie, dass wir tun die Kurse der neuen Plattform ("on-demand") unterstützen.

      Videos werden standardmäßig mit einer Auflösung von 540p heruntergeladen. Bei On-Demand-Kursen akzeptiert das Flag --video-resolution 360p, 540p und 720p.

      Um nur die .txt- und/oder .srt-Untertiteldateien anstelle der Videos herunterzuladen, verwenden Sie -ignore-formats mp4 --subtitle-language en oder ein beliebiges Format, in dem die Videos codiert sind, und die gewünschten Sprachen für Untertitel.

      Auf *nix-Plattformen ist die Verwendung von a

      Die Datei /.netrc ist eine gute Alternative, um jedes Mal sowohl Ihren Benutzernamen (d. h. Ihre E-Mail-Adresse) als auch Ihr Passwort in der Befehlszeile anzugeben. Um es zu verwenden, fügen Sie einfach eine Zeile wie die folgende zu einer Datei namens .netrc in Ihrem Home-Verzeichnis (oder dem Äquivalent, wenn Sie Windows verwenden) mit Inhalten wie:

      Erstellen Sie die Datei, falls sie noch nicht existiert. Von da an können Sie von der Verwendung von -u und -p auf einfach Coursera-dl mit der Option -n umschalten. Dies ist besonders praktisch, da die Eingabe von Benutzernamen (E-Mail-Adressen) und Passwörtern direkt auf der Kommandozeile ermüdend werden kann (noch mehr, wenn Sie zufällig ein "starkes" Passwort gewählt haben).

      Wenn Sie alternativ Ihre bevorzugten Parameter (die auch Ihren Benutzernamen und Ihr Passwort enthalten können) speichern möchten, erstellen Sie eine Datei namenscoursera-dl.conf, in der das Skript ausgeführt werden soll, mit folgendem Format:

      Parameter, die in der Datei angegeben sind, werden überschrieben, wenn sie erneut auf der Kommandozeile angegeben werden.

      Notiz: In Coursera-dl.conf sollten alle Parameter nicht in Anführungszeichen gesetzt werden.

      Wenn Sie im Standardmodus den Download-Vorgang durch Drücken von STRG + C unterbrechen, werden teilweise heruntergeladene Dateien von Ihrer Festplatte gelöscht und Sie müssen den Download-Vorgang von vorne beginnen. Wenn Ihr Download durch etwas anderes als KeyboardInterrupt ( STRG + C ) wie einen plötzlichen Systemabsturz unterbrochen wurde, verbleiben teilweise heruntergeladene Dateien auf Ihrer Festplatte und wenn Sie den Vorgang das nächste Mal erneut starten, werden diese Dateien aus der Download-Liste verworfen! Ihren Job, um sie vor dem nächsten Start manuell zu löschen. Aus diesem Grund haben wir eine Option namens --resume hinzugefügt, die Ihre Downloads dort fortsetzt, wo sie aufgehört haben:

      Diese Option kann auch mit externen Downloadern verwendet werden:

      Anmerkung 1: Einige externe Downloader verwenden ihre eigene integrierte Lebenslauffunktion, die möglicherweise nicht mit anderen kompatibel ist. Verwenden Sie sie daher auf eigene Gefahr.

      Anmerkung 2: Denken Sie daran, dass im Wiederaufnahmemodus unterbrochene Dateien GEWOHNHEIT von Ihrer Festplatte gelöscht werden.

      HINWEIS: Wenn Ihr Passwort Satzzeichen, Anführungszeichen oder andere "komische Zeichen" enthält (z. B. < , > , # , & , | usw.), müssen Sie diese möglicherweise aus Ihrer Shell entfernen. Bei bash oder anderen Bourne-Shell-Klonen (und wahrscheinlich bei vielen anderen Shells) besteht eine der besseren Möglichkeiten darin, Ihr Passwort in einfache Anführungszeichen zu setzen, damit Sie nicht auf Probleme stoßen. Weitere Informationen finden Sie in Ausgabe Nr. 213.

      Wenn Sie Probleme beim Herunterladen von Unterrichtsmaterialien haben, versuchen Sie bitte zu sehen, ob eine der folgenden Aktionen Ihr Problem löst:

      Stellen Sie sicher, dass der von Ihnen verwendete Kursname dem Ressourcennamen entspricht, der in der URL für diesen Kurs verwendet wird: https://www.coursera.org/learn/<CLASS_NAME>/home/welcome

      Haben Sie versucht, die zwischengespeicherten Cookies/Anmeldeinformationen mit der Option --clear-cache zu bereinigen?

      Beachten Sie, dass viele Kurse (die meisten vielleicht?) die Materialien nach kurzer Zeit nach Abschluss des Kurses entfernen, während andere Kurse die Materialien bis zu einer nächsten Sitzung/einem nächsten Angebot desselben Kurses aufbewahren (um Probleme mit akademischer Unehrlichkeit zu vermeiden, scheinbar).

      Kurz gesagt, es ist nicht garantiert, dass Sie nach Abschluss des Kurses herunterladen können, und leider können wir Ihnen dabei nicht helfen.

      Stellen Sie sicher, dass Sie alle Abhängigkeiten gemäß der Datei requirements.txt wie oben beschrieben installiert und/oder aktualisiert haben.

      Man kann eine Cookie-Datei im Netscape-Stil mit einer Browsererweiterung (1, 2) exportieren und mit der Option -c verwenden. Dies ist praktisch, wenn die Authentifizierung per Passwort nicht funktioniert (der Authentifizierungsprozess ändert sich hin und wieder).

      Wenn die Ergebnisse 0 Abschnitte anzeigen, haben Sie höchstwahrscheinlich ungültige Zugangsdaten angegeben (Benutzername und/oder Passwort in der Befehlszeile oder in Ihrer .netrc-Datei oder in Ihrer Coursera-dl.conf-Datei).

      Für Kurse, die noch nicht begonnen haben, aber eine vorherige Iteration hatten, ist manchmal eine Vorschau verfügbar, die alle Kurse des letzten Kurses enthält. Diese Dateien können heruntergeladen werden, indem der Parameter --preview übergeben wird.

      Wenn Sie eine Fehlermeldung wie Klasse konnte nicht gefunden werden: <CLASS_NAME> erhalten, dann:

      • Überprüfen Sie, ob der Kursname korrekt ist. Aktuelle Klassennamen in Coursera bestehen aus einem kurzen Kursnamen, z.B. Klasse und die aktuelle Version des Kurses (eine Nummer). Für eine Klasse namens class müssten Sie beispielsweise class-001 , class-002 usw. verwenden.
      • Zweitens überprüfen Sie, ob Sie für den Kurs eingeschrieben sind. Sie können nicht auf die Kursmaterialien zugreifen, wenn Sie nicht offiziell eingeschrieben sind und dem Ehrenkurs zugestimmt haben über die Webseite.

      Sie erhalten eine Fehlermeldung, wenn Sie -n verwenden, um anzugeben, dass Sie eine .netrc-Datei verwenden möchten und

      Sie möchten, dass das Skript Ihre Standard-Netrc-Datei verwendet und

      Sie erhalten eine Meldung mit der Aufschrift Coursera-dl: error: zu wenige Argumente

      Dann sollten Sie -- als Argument nach -n angeben, also -n -- oder die Reihenfolge ändern, in der Sie die Argumente an das Skript übergeben, sodass das Argument nach -n mit einem Bindestrich (-) beginnt. Andernfalls denkt das argparse-Modul von Python, dass das, was Sie übergeben, der Name der netrc-Datei ist, die Sie verwenden möchten. Siehe Ausgabe #162.

      Wenn Ihr Passwort Leerzeichen enthält, vergessen Sie nicht, es in Anführungszeichen zu schreiben.

      Haben Sie das richtige Projekt installiert?

      Warnung: Wenn Sie das Skript mit PyPi (pip) installiert haben, überprüfen Sie bitte, ob Sie das richtige Projekt installiert haben. Wir mussten in pip einen anderen Namen verwenden, da unser ursprünglicher Name bereits vergeben war. Denken Sie daran, es zu installieren mit:

      Wenn Sie aus China kommen und Probleme beim Herunterladen von Videos haben, kann das Hinzufügen von "52.84.167.78 d3c33hcgiwev3.cloudfront.net" in der Hosts-Datei (/etc/hosts) und das Auffrischen des DNS mit "ipconfig/flushdns" funktionieren (siehe https: //github.com/googlehosts/hosts für weitere Informationen).

      0 Sektionen und 0 Vorträge auf dieser Seite gefunden

      Stellen Sie zunächst sicher, dass Sie für den Kurs eingeschrieben sind, den Sie herunterladen möchten.

      Viele alte Kurse haben bereits die Immatrikulation geschlossen, daher ist dies oft keine Option. Versuchen Sie in diesem Fall den Download mit der Option --preview. Einige Kurse erlauben das Herunterladen von Vorlesungsmaterialien ohne sich einzuschreiben, aber es ist nicht üblich und es kann nicht garantiert werden, dass es für jeden Kurs funktioniert.

      Schließlich können Sie die Videos herunterladen, wenn Sie zumindest über die Indexdatei verfügen, die alle Kursmaterialien auflistet. Vielleicht kann Ihr Freund, der eingeschrieben ist, diese Kursseite für Sie speichern. Verwenden Sie in diesem Fall die Option --process_local_page.

      Alternativ können Sie diese verschiedenen Browsererweiterungen ausprobieren, die für dieses Problem entwickelt wurden.

      Wenn keiner der oben genannten Punkte für Sie funktioniert, können wir nichts tun.

      Coursera-dl unterstützt externe Downloader, aber beachten Sie, dass diese nur zum Herunterladen von Materialien verwendet werden, nachdem der Lehrplan geparst wurde, z. Videos, PDFs, einige Handouts und zusätzliche Dateien (der Lehrplan wird immer mit dem internen Downloader heruntergeladen). Wenn beim Herunterladen solcher Materialien Probleme auftreten, sollten Sie den externen Downloader verwenden und dessen Zeitüberschreitungswerte konfigurieren. Sie können beispielsweise den aria2c-Downloader verwenden, indem Sie die Option --aria übergeben:

      Und füge dies in die Konfigurationsdatei von aria2c ein

      /.aria2/aria2.conf um Zeitüberschreitungen zu reduzieren:

      Die Timeout-Konfiguration für den internen Downloader wird nicht unterstützt.

      Wenn Sie unter Windows hinter einem Proxy arbeiten, richten Sie die Umgebungsvariablen ein, bevor Sie das Skript wie folgt ausführen:

      Windows: Fehler beim Erstellen des Prozesses

      In C:Users<user>AppDataLocalProgramsPythonPython39-32Scripts oder wo auch immer Python installiert ist (oben ist Standard für Windows), bearbeiten Sie die folgende Datei im Leerlauf: (Rechtsklick auf den Skriptnamen und wählen Sie "Mit Leerlauf bearbeiten" im Menü)

      (Anführungszeichen hinzufügen). Dies ist ein bekannter Pip-Bug.

      SSLError: [Errno 1] _ssl.c:504: error:14094410:SSL-Routinen:SSL3_READ_BYTES:sslv3-Warnungs-Handshake-Fehler

      Dies ist ein bekannter Fehler, bitte melden Sie diese Fehlermeldung nicht! Das Problem ist in IHRE Umgebung. Um es zu beheben, gehen Sie wie folgt vor:

      Wenn das Problem weiterhin besteht, lesen Sie bitte die folgenden Punkte, um weitere Ideen zur Behebung des Problems zu erhalten: #330 #377 #329

      Alternatives CDN für MathJax.js

      Beim Speichern einer Kursseite haben wir das MathJax-Rendering für mathematische Gleichungen aktiviert, indem wir MathJax.js in die Kopfzeile eingefügt haben. Das Skript verwendet einen CDN-Dienst von mathjax.org. Diese URL ist jedoch in einigen Ländern/Regionen nicht zugänglich. Sie können den Parameter --mathjax-cdn <MATHJAX_CDN> angeben, um die Datei MathJax.js anzugeben, auf die in Ihrer Region zugegriffen werden kann.

      Bevor Sie ein Problem melden, führen Sie bitte die folgenden Schritte aus:

      Stellen Sie sicher, dass Sie die neueste Version des Skripts ausführen und die empfohlenen Versionen seiner Abhängigkeiten finden Sie in der Datei Requirements.txt . Verwenden Sie im Zweifelsfall folgenden Befehl:

      Wenn das Problem weiterhin besteht, können Sie gerne ein Problem in unserem Bugtracker öffnen, bitte füllen Sie die Problemvorlage mit aus so viele informationen wie möglich.

      Ein Problem melden/einen Fehler melden

      Wenn Sie Fehler gegen Coursera-dl melden, vergessen Sie bitte nicht, genügend Informationen anzugeben, damit Sie uns helfen können:

      • Tritt das Problem mit der neuesten Version des Skripts auf?
      • Welches Betriebssystem verwendest du?
      • Haben Sie alle empfohlenen Versionen der Module? Siehe sie in der Datei Requirements.txt .
      • Auf welchen Kurs möchten Sie zugreifen?
      • Was ist die genaue Befehlszeile, die Sie verwenden (Sie können Ihren Benutzernamen und Ihr Passwort mit Sternchen verbergen, aber alle anderen Informationen unberührt lassen).
      • Was sind die genauen Nachrichten, die Sie erhalten? Bitte verwenden Sie die Option --debug, bevor Sie die Nachrichten als Fehlerbericht veröffentlichen. Bitte kopieren und einfügen. Formulieren Sie die Nachrichten nicht um.

      Ich freue mich über Feedback. Hier sind einige der Kommentare, die ich erhalten habe:

      "Danke für die gute Arbeit! Wissen wird die Welt dank Ihres Skripts ein wenig mehr überfluten!"
      Guillaume V. 08.11.2012

      "Ich wollte Ihnen nur Requisiten für Ihr Python-Skript schicken, um Coursera-Kurse herunterzuladen. Ich habe es in Kenia für meine gemeinnützige Organisation verwendet, um Online-Kurse an Orte zu bringen, an denen das Internet wirklich teuer und unzuverlässig ist. Die meisten Kinder hier können es sich nicht leisten High School, und das Herunterladen einer dieser Klassen mit den üblichen Mitteln würde mehr kosten, als die durchschnittliche Familie in einer Woche verdient. Danke!"
      Jay L., Tunapanda 20.03.2013

      "Ich bin ein großer Fan von Coursera und besuche viele verschiedene Kurse. Zeitliche Beschränkungen erlauben es mir nicht, alle Kurse, die ich möchte, gleichzeitig zu besuchen. Ich bin auf dein Skript gestoßen und benutze es sehr gerne! Tolle Sache und danke für die Bereitstellung auf Github - gut gemacht!"
      William G. 18.02.2013

      "Dieses Skript ist großartig! Ich habe jedes einzelne Video und ppt mühsam von Hand heruntergeladen - habe mir wget angesehen, bin aber auf Wildcard-Probleme mit HTML gestoßen, und dann... bin ich auf dein Skript gestoßen. Ich kann dir nicht sagen, wie viele Stunden du hast hab mich gerade gerettet :) Wenn du mal in Paris/Stockholm bist, ist es absolut Pflicht, dass ich dir ein Bier kaufe :)"
      Razvan T. 26.11.2012

      "Vielen Dank! :)"
      Viktor V. 24.04.2013

      Bitte posten Sie Fehler und Probleme auf github. Bitte, NICHT Senden Sie Supportanfragen privat an die Betreuer! Wir sind ziemlich überschwemmt mit alltäglichen Aktivitäten. Wenn Sie Probleme haben, BITTE, legen Sie sie im Issue Tracker ab.


      FeatureSetSelector in TPOT

      FeatureSetSelector ist ein spezieller neuer Operator in TPOT. Dieser Operator ermöglicht die Funktionsauswahl basierend auf vorrangig Expertenwissen. In der RNA-seq-Genexpressionsanalyse kann dieser Operator beispielsweise verwendet werden, um einen oder mehrere Gen-(Merkmals-)Satz(e) basierend auf GO-Begriffen (Gene Ontology) oder annotierten Gensätzen auszuwählen Molecular Signatures Database (MSigDB) im 1. Schritt der Pipeline über die obige Vorlagenoption, um die Abmessungen und die TPOT-Berechnungszeit zu reduzieren. Dieser Operator benötigt eine Datensatzliste im csv-Format. In dieser CSV-Datei gibt es nur drei Spalten: 1. Spalte enthält Feature-Set-Namen, 2. Spalte ist die Gesamtzahl der Features in einem Set und 3. Spalte ist eine Liste von Feature-Namen (wenn Eingabe X pandas.DataFrame ist) oder Indizes ( wenn Eingabe X numpy.ndarray ist) durch "" begrenzt. Nachfolgend finden Sie ein Beispiel für die Verwendung dieses Operators in TPOT.

      Weitere Informationen finden Sie in unserem Preprint-Papier.


      Melden Sie sich für den Newsletter an

      Möchten Sie wissen, wie wir unseren Traffic auf über 1000% gesteigert haben?

      Schließen Sie sich über 20.000 anderen an, die unseren wöchentlichen Newsletter mit Insider-WordPress-Tipps erhalten!

      Es gibt jedoch auch viele Groovy-Implementierungen, mit denen Sie es als Skriptsprache verwenden können. The most popular ones are the Grails web application framework (formerly known as Groovy on Grails) and the Gradle build automation tool, but there are several others too.

      6. Perl

      Perl is a general-purpose scripting language that’s been around for more than thirty years (since 1987). Originally, it was created as a UNIX scripting language for report processing. That’s also where its name comes from, as the Perl acronym standing for ‘Practical Extraction and Reporting Language’.

      The Perl language became popular in the 1990s when programmers began to widely use it for CGI (Common Gateway Interface) scripting, which is an older interface specification for web servers (currently, it’s mainly used by legacy sites).

      Despite being a relatively early player, Perl is still the 11th on the TIOBE index and the 21st most popular language on GitHub (as of October 2020).

      Code Example

      Perl’s syntax is similar to the C language. The Perl code example below first defines the square() subroutine that calculates and returns the square of a number, then passes the value 8 as an argument, runs the subroutine, and saves the result into the $sq variable:

      Use Cases and Environments

      Even though these days it’s not the most frequent choice of web developers, Perl can be successfully used in backend development. Besides the CGI runtime environment, it also executes on the Apache and Nginx web servers — the LAMP stack is actually LAMPP, standing for Linux, Apache, MySQL, PHP, and Perl.

      There also exist some Perl web development frameworks, with Catalyst, Mojolicious, and Dancer being the most popular ones.

      Perl is used by several notable websites and applications such as Amazon, IMDB, Booking.com, and the BBC iPlayer. It’s used in other areas, too, such as network programming and system administration. You can also check out the Comprehensive Perl Archive Network (CPAN) where 25,000+ open-source Perl projects are available for you to download.

      7. Lua

      Lua is a fast and lightweight scripting language. The word ‘lua’ means ‘moon’ in Portuguese, as the language is developed and maintained by the Pontifical Catholic University of Rio de Janeiro in Brazil. Lua supports the procedural, object-oriented, and functional programming paradigms.

      As Lua’s interpreter is written in C, it can be easily embedded into applications using its C API. That being said, you can use Lua to extend existing applications written in C-based languages such as C, C++, C#, Java, Perl, Ruby, and others.

      Code Example

      Lua has a concise and easy-to-read syntax, similar to Python and Ruby. The following Lua code example shows how to use the if-then-else statement. First, it evaluates the op variable, then performs basic arithmetic operations depending on its value:

      Use Cases and Environments

      The default Lua implementation doesn’t interpret source code directly but first compiles it into byte code that it later executes on the Lua virtual machine. As all this happens at runtime, there’s no manual compilation step you need to perform (even though you can opt for compiling Lua before runtime to improve performance).

      There are other Lua implementations as well, such as LuaJIT, LuaVela, and many others.

      Lua is frequently used to develop video games, such as Angry Birds, World of Warcraft, and Grim Fandango. As it’s easy to embed, it’s also a frequent choice for embedded devices such as set-top boxes, instrument panels of cars (e.g. Volvo), IP cameras (e.g. Cisco), and others.

      It can also be used in web development, as both Apache and Nginx servers have a Lua module (here’s Apache’s mod_lua, and here’s Nginx’s ngx_http_lua_module). Wikipedia chose Lua as its template scripting language, and the UI of Adobe Photoshop Lightroom is written in Lua as well.

      8. Bash

      Bash is the name of both a command-line interpreter (shell) for the GNU operating system and the belonging scripting language. ‘Linux’ is, in fact, the GNU operating system using the Linux kernel (a kernel is the core part of the OS, it’s the first program that the operating system loads).

      Bash is a replacement for the original UNIX Bourne shell (sh) — the Bash acronym stands for ‘Bourne Again SHell’ (a pun on ‘born again shell’).

      Besides being the superset to the Bourne shell syntax, Bash also includes features from other shell scripting languages such as KornShell (ksh) and C shell (csh) — for example, command-line editing and command history. You can use Bash in both an interactive mode (executing one command at a time and waiting for the machine’s reply) and scripting mode (running a set of commands — a Bash script — at once).

      Code Example

      Like most CLI scripting languages, Bash has a simple and descriptive syntax. The following Bash code example selects a file from the current folder and outputs a message containing the name and index of the file:

      Need blazing-fast, secure, and developer-friendly hosting for your client sites? Kinsta is built with WordPress developers in mind and provides plenty of tools and a powerful dashboard. Check out our plans

      Use Cases and Environments

      You can use Bash to make changes and perform different actions related to your operating system, such as executing commands, carrying out tasks that most people would do using a graphical user interface (e.g. creating, moving, or deleting folders and files), customizing and automating administrative tasks, connecting to a remote server, and many others.

      Bash is the default shell for many Unix-based operating systems, including most Linux distros and all macOS releases up to macOS Catalina that replaced Bash with Z shell (Zsh) in 2019. You can also run Bash scripts on Windows 10, using the Windows Subsystem for Linux (WSL) compatibility layer developed by Microsoft.

      9. PowerShell

      Originally, PowerShell was a command-line shell and scripting language solely for the Windows operating system. Since then, Microsoft open sourced and moved it from the .NET Framework, which can create only Windows applications, to .NET Core, which can create applications for Windows, Linux, and macOS. This means PowerShell is now cross-platform.

      It has also been renamed from Windows PowerShell to PowerShell Core, corresponding to the underlying framework. Unlike most command-line shells, PowerShell accepts and returns .NET objects instead of plain text, which gives way to new opportunities in task automation.

      Code Example

      PowerShell has a compact syntax that makes working in the command line faster. The PowerShell code example below creates a backup of the boot.ini file and saves it to the boot.bak file:

      Use Cases and Environments

      You can use PowerShell on the Windows, Linux, macOS operating systems, and some ARM devices (e.g. wearables, multimedia players, tablets, and other consumer electronic devices).

      You can use PowerShell for system administration, task automation, and configuration management. To find PowerShell modules and scripts, you can check out the PowerShell Gallery and Microsoft’s official sample script collection, too.

      R is both a software environment and scripting language that you can use for statistical computing, data analysis, and graphical display. It’s a free and open source GNU project and an implementation of the S statistical computing language (not in active development anymore).

      R allows you to use many different statistical techniques such as classical statistical tests, clustering, time series analysis, linear and non-linear modeling, and others.

      Code Example

      R’s syntax is different from most scripting languages and has some unusual elements, too — for instance, the primary assignment operator is <- instead of the = equals sign and it has loopless loops — see more about the quirks of the R syntax in this beginner’s guide to R by Sharon Machlis.

      The following R code example defines a names attribute for the fruit vector (basic data structure in R that contains elements of the same type) that uses alphanumeric names ( orange , banana , apple , peach ) to help identify its components. Later, the lunch (or another) subvector can access each component using its alias name:

      Use Cases and Environments

      The R software environment is cross-platform you can run it on Windows, Linux, and macOS operating systems. The default R implementation is also available from some other scripting languages such as Python and Perl. This means that you can access all the statistical functionality of R using these scripting languages.

      Besides the default R environment, you can use the R scripting language in other environments as well, such as pqR (stands for ‘a pretty quick version of R’) and Renjin (an R implementation on top of the Java Virtual Machine).

      11. VBA

      VBA stands for Visual Basic for Applications and it’s an implementation of the Visual Basic 6 programming language (not in active development since 2008). It has been created for Microsoft Office applications to enable developers to automate repetitive tasks, add new functionalities, and interact with the end users of documents.

      Similar to Visual Basic, VBA follows the event-driven programming paradigm that puts events such as user actions into the center that drive the flow of the program.

      As Microsoft Office applications have a graphical user interface, you can attach VBA scripts to menu buttons, keyboard shortcuts, macros (programmable patterns), and OLE events (Object Linking and Embedding that lets you control one application from another it’s a proprietary Microsoft technology).

      Code Example

      As VBA is based on Visual Basic (which is an augmentation of BASIC), it uses a syntax similar to the languages of the BASIC (Beginners’ All-purpose Symbolic Instruction Code) family — which means it’s very beginner-friendly.

      The VBA code example below uses the GetCertificateDetail() method of the SignatureInfo object to get the expiration date of a digital certificate:

      Use Cases and Environments

      The VBA scripting language is embedded into most Microsoft Office applications, respectively Access, Excel, Office for Mac, Outlook, PowerPoint, Project, Publisher, Visio, and Word — each having a separate reference guide on Microsoft’s documentation site while general VBA concepts are detailed in the library reference.

      Besides Microsoft Office applications, there are other apps that also support VBA, such as AutoCAD and CorelDRAW.

      12. Emacs Lisp

      Emacs Lisp is a domain-specific scripting language designed for the GNU Emacs text editor. It’s a dialect of the Lisp programming language family (the name comes from LISt Processor).

      As Emacs Lisp has been designed to be used within a code editor, it comes with a feature set specific to that environment, such as text scanning and parsing, buffer (objects with editable text) and display management, and others.

      The Emacs Lisp scripting language is closely integrated with the editor interface itself, so every command is also a Lisp function that you can call from your script, and customization parameters are Lisp variables as well.

      Code Example

      The syntax of Emacs Lisp is based on a fully parenthesized prefix notation that can be a bit hard to read at first if you haven’t worked with any Lisp language before.

      The following Emacs Lisp code example defines two variables (symbols) and assigns a list of values to each — a list of trees ( pine , fir , oak , maple ) to the symbol trees and a list of herbivores ( gazelle , antelope , zebra ) to the symbol herbivores :

      Use Cases and Environments

      The Emacs text editor is a cross-platform application that you can install on Windows, Linux, and macOS machines.

      Using the Emacs Lisp scripting language, you can extend and customize the code editor, repeat and automate processes, create graphs, restrict focus to specific areas (for security), search regular expressions, store text, define modes and keymaps, ask questions from users, and perform many other actions.

      There are also some configuration frameworks for Emacs Lisp — Doom Emacs and Spacemacs being the most well-known ones.

      13. GML

      The acronym GML stands for GameMaker Language. It’s a good example of a domain-specific scripting language used in game development. GML is a proprietary scripting language belonging to GameMaker Studio 2, a cross-platform game engine and development platform owned and maintained by YoYo Games.

      Even though GML is mainly used for controlling game objects, it’s not an object-oriented language but a procedural one. It allows you to call custom scripts from any game object.

      Besides the GML scripting language, GameMaker Studio 2 also has a visual scripting tool called Drag and Drop (DnD). Due to the flexible nature of GameMaker Studio 2, you can mix DnD with your GML scripts, too.

      Code Example

      The syntax of GML is similar to JavaScript and other C-like languages.

      The following GML code example makes a game object move horizontally towards the mouse pointer on the screen at a speed of 5 pixels per step. Once it reaches the current position of the pointer, the script creates an explosion effect layer, runs it (there’s an explosion effect on the screen), then destroys the instance (the explosion effect gets removed):

      Use Cases and Environments

      GML is interpreted by GameMaker Studio 2 that you need to purchase if you want to develop games in this scripting language.

      Pricing depends on the platform you want to create games for — Mac and Windows games being the cheapest ones cross-platform (Windows, macOS, Ubuntu) desktop games, HTML5 web games, UWP (Universal Windows Platform) games, and cross-platform (Android, Fire, iOS) mobile games being in the mid-tier and PS4, Xbox One, and Nintendo Switch being the most expensive ones.

      Some examples of video games created with GML include Blackhole, 10 Second Ninja X, Death’s Gambit, Deltarune, and several others.


      Common problems and solutions¶

      Most HTTP servers buffer the output from CGI scripts until the script is completed. This means that it is not possible to display a progress report on the client’s display while the script is running.

      Check the installation instructions above.

      Check the HTTP server’s log files. ( tail -f logfile in a separate window may be useful!)

      Always check a script for syntax errors first, by doing something like python script.py .

      If your script does not have any syntax errors, try adding import cgitb cgitb.enable() to the top of the script.

      When invoking external programs, make sure they can be found. Usually, this means using absolute path names — PATH is usually not set to a very useful value in a CGI script.

      When reading or writing external files, make sure they can be read or written by the userid under which your CGI script will be running: this is typically the userid under which the web server is running, or some explicitly specified userid for a web server’s suexec feature.

      Don’t try to give a CGI script a set-uid mode. This doesn’t work on most systems, and is a security liability as well.

      Note that some recent versions of the HTML specification do state what order the field values should be supplied in, but knowing whether a request was received from a conforming browser, or even from a browser at all, is tedious and error-prone.