Wie lese ich jede Zeile einer Datei in Python und speichere jede Zeile als Element in einer Liste?
Ich möchte die Datei Zeile für Zeile lesen und jede Zeile an das Ende der Liste anhängen.
with open(filename) as f:
content = f.readlines()
# you may also want to remove whitespace characters like `\n` at the end of each line
content = [x.strip() for x in content]
file.readlines()
in einerfor
Schleife verwenden, ein Dateiobjekt selbst ist genug:lines = [line.rstrip('\n') for line in file]
readlines()
ist die Verwendung nicht sehr effizient, da dies zu MemoryError führen kann . In diesem Fall ist es besser, die Dateifor line in f:
mit jederline
Variablen zu durchlaufen und mit ihr zu arbeiten ..rstrip()
etwas schneller, wenn Sie Leerzeichen von den Zeilenenden entfernen.with open(filename) as f: content = [i.strip() for i in f.readlines()]
Siehe Eingabe und Ausgabe :
oder mit dem Strippen des Zeilenumbruchs:
quelle
f.read().splitlines()
, die nicht entfernt Zeilenumbrüchefor line in open(filename)
Safe? Wird die Datei automatisch geschlossen?lines = [x.rstrip('\n') for x in open('data\hsf.txt','r')]
Wie kann ich die Datei nach dem Lesen schließen, wenn ich auf diese Weise schreibe?open
ohne den Kontextmanager (oder eine andere garantierte Methode zum Schließen) zu verwenden, ist dies nicht wirklich einer dieser Fälle - wenn das Objekt keine Referenzen mehr hat Dazu wird Müll gesammelt und die Datei geschlossen, was sofort bei Fehler oder nicht passieren sollte, wenn das Listenverständnis verarbeitet ist.Dies ist expliziter als nötig, macht aber, was Sie wollen.
quelle
array
, es können jedoch auch andere Umstände vorliegen ). Sicherlich kann dieser Ansatz bei großen Dateien Probleme mindern.Dies ergibt ein "Array" von Zeilen aus der Datei.
open
Gibt eine Datei zurück, die wiederholt werden kann. Wenn Sie eine Datei durchlaufen, erhalten Sie die Zeilen aus dieser Datei.tuple
kann einen Iterator nehmen und eine Tupelinstanz für Sie aus dem Iterator instanziieren, den Sie ihm geben.lines
ist ein Tupel, das aus den Zeilen der Datei erstellt wird.quelle
lines = open(filename).read().split('\n')
stattdessen.lines = open(filename).read().splitlines()
ein wenig sauberer, und ich glaube, dass es auch DOS-Zeilenenden besser handhabt.list
nimmt a etwa 13,22% mehr Speicherplatz ein als atuple
. Ergebnisse kommen vonfrom sys import getsizeof as g; i = [None] * 1000; round((g(list(i)) / g(tuple(i)) - 1) * 100, 2)
. Das Erstellen einestuple
dauert etwa 4,17% länger als das Erstellen eineslist
(mit einer Standardabweichung von 0,16%). Die Ergebnisse stammen ausfrom timeit import timeit as t; round((t('tuple(i)', 'i = [None] * 1000') / t('list(i)', 'i = [None] * 1000') - 1) * 100, 2)
30-maligem Laufen . Meine Lösung bevorzugt Platz gegenüber Geschwindigkeit, wenn die Notwendigkeit einer Veränderlichkeit unbekannt ist.Wenn Sie das
\n
enthalten möchten :Wenn Sie nicht aufgenommen werden möchten
\n
:quelle
Nach Pythons Methoden für Dateiobjekte ist die einfachste Möglichkeit, eine Textdatei in eine zu konvertieren,
list
folgende:Wenn Sie nur die Textdateizeilen durchlaufen müssen, können Sie Folgendes verwenden:
Alte Antwort:
Verwenden von
with
undreadlines()
:Wenn Sie die Datei nicht schließen möchten, funktioniert dieser Einzeiler:
Der traditionelle Weg:
quelle
Sie können einfach Folgendes tun, wie vorgeschlagen wurde:
Beachten Sie, dass dieser Ansatz zwei Nachteile hat:
1) Sie speichern alle Zeilen im Speicher. Im Allgemeinen ist dies eine sehr schlechte Idee. Die Datei kann sehr groß sein und Ihnen kann der Speicher ausgehen. Auch wenn es nicht groß ist, ist es einfach eine Verschwendung von Speicher.
2) Dies erlaubt nicht die Verarbeitung jeder Zeile, während Sie sie lesen. Wenn Sie Ihre Zeilen danach verarbeiten, ist dies nicht effizient (erfordert zwei Durchgänge anstelle von einem).
Ein besserer Ansatz für den allgemeinen Fall wäre der folgende:
Wo Sie Ihre Prozessfunktion nach Ihren Wünschen definieren. Zum Beispiel:
(Die Implementierung der
Superman
Klasse bleibt Ihnen als Übung überlassen).Dies funktioniert gut für jede Dateigröße und Sie gehen Ihre Datei in nur 1 Durchgang durch. So funktionieren generische Parser normalerweise.
quelle
open('file_path', 'r+')
Daten in Liste
Angenommen, wir haben eine Textdatei mit unseren Daten wie in den folgenden Zeilen:
Inhalt der Textdatei:
python
und schreiben Sie im Interpreter:Das Python-Skript:
Verwenden von Anhängen:
Oder:
Oder:
Oder:
Ausgabe:
quelle
encoding="utf-8"
erforderlich?read().splitlines()
wird Ihnen von Python zur Verfügung gestellt: Es ist einfachreadlines()
(was wahrscheinlich schneller ist, da es weniger verschwenderisch ist).read().splitlines()
und erzeugtreadlines()
nicht die gleiche Ausgabe. Sind Sie sicher, dass sie gleichwertig sind?Um eine Datei in eine Liste einzulesen, müssen Sie drei Dinge tun:
Glücklicherweise macht es Python sehr einfach, diese Dinge zu tun. Der kürzeste Weg, eine Datei in eine Liste einzulesen, ist:
Ich werde jedoch noch einige Erklärungen hinzufügen.
Datei öffnen
Ich gehe davon aus, dass Sie eine bestimmte Datei öffnen möchten und sich nicht direkt mit einem Datei-Handle (oder einem dateiähnlichen Handle) befassen. Die am häufigsten verwendete Funktion zum Öffnen einer Datei in Python ist
open
, dass in Python 2.7 ein obligatorisches und zwei optionale Argumente erforderlich sind:Der Dateiname sollte eine Zeichenfolge sein, die den Pfad zur Datei darstellt . Zum Beispiel:
Beachten Sie, dass die Dateierweiterung angegeben werden muss. Dies ist besonders wichtig für Windows-Benutzer, da Dateierweiterungen wie
.txt
oder.doc
usw. standardmäßig ausgeblendet sind wenn sie im Explorer angezeigt werden.Das zweite Argument ist das
mode
, es istr
standardmäßig "schreibgeschützt". Genau das brauchen Sie in Ihrem Fall.Wenn Sie jedoch tatsächlich eine Datei erstellen und / oder in eine Datei schreiben möchten, benötigen Sie hier ein anderes Argument. Es gibt eine ausgezeichnete Antwort, wenn Sie einen Überblick wünschen .
Zum Lesen einer Datei können Sie diese weglassen
mode
oder explizit übergeben:Beide öffnen die Datei im schreibgeschützten Modus. Wenn Sie eine Binärdatei unter Windows einlesen möchten, müssen Sie den folgenden Modus verwenden
rb
:Auf anderen Plattformen wird der
'b'
(Binärmodus) einfach ignoriert.Nachdem ich nun gezeigt habe, wie
open
die Datei erstellt wird, lassen Sie uns darüber sprechen, dass Sie sie immer wieder benötigenclose
. Andernfalls bleibt ein offenes Datei-Handle für die Datei erhalten, bis der Prozess beendet wird (oder Python das Datei-Handle beschädigt).Während Sie verwenden könnten:
Dadurch kann die Datei nicht geschlossen werden, wenn etwas dazwischen liegt
open
undclose
eine Ausnahme ausgelöst wird. Sie können dies vermeiden, indem Sie eintry
und verwendenfinally
:Python bietet jedoch Kontextmanager mit einer schöneren Syntax (die jedoch
open
fast identisch mit dertry
und derfinally
oben genannten ist):Der letzte Ansatz ist der empfohlene Ansatz zum Öffnen einer Datei in Python!
Datei lesen
Okay, Sie haben die Datei geöffnet. Wie kann man sie jetzt lesen?
Die
open
Funktion gibt einfile
Objekt zurück und unterstützt das Pythons-Iterationsprotokoll. Jede Iteration gibt Ihnen eine Zeile:Dadurch wird jede Zeile der Datei gedruckt. Beachten Sie jedoch, dass jede Zeile
\n
am Ende ein Zeilenumbruchzeichen enthält (Sie möchten möglicherweise überprüfen, ob Ihr Python mit universeller Zeilenumbruchunterstützung erstellt wurde - andernfalls können Sie auch\r\n
Windows oder\r
Mac als Zeilenumbrüche verwenden). Wenn Sie dies nicht möchten, können Sie einfach das letzte Zeichen (oder die letzten beiden Zeichen unter Windows) entfernen:Aber die letzte Zeile hat nicht unbedingt eine nachfolgende neue Zeile, daher sollte man diese nicht verwenden. Man könnte prüfen, ob es mit einem nachgestellten Zeilenumbruch endet, und wenn ja, entfernen Sie es:
Sie können jedoch einfach alle Leerzeichen (einschließlich des
\n
Zeichens) am Ende der Zeichenfolge entfernen. Dadurch werden auch alle anderen nachgestellten Leerzeichen entfernt, sodass Sie vorsichtig sein müssen, wenn diese wichtig sind:Wenn die Zeilen jedoch mit
\r\n
(Windows "newlines") enden.rstrip()
, kümmert sich das auch um das\r
!Speichern Sie den Inhalt als Liste
Nachdem Sie nun wissen, wie Sie die Datei öffnen und lesen, ist es Zeit, den Inhalt in einer Liste zu speichern. Die einfachste Möglichkeit wäre, die
list
Funktion zu verwenden:Wenn Sie die nachfolgenden Zeilenumbrüche entfernen möchten, können Sie stattdessen ein Listenverständnis verwenden:
Oder noch einfacher: Die
.readlines()
Methode desfile
Objekts gibt standardmäßig einelist
der Zeilen zurück:Dies schließt auch die nachfolgenden Zeilenumbruchzeichen ein. Wenn Sie sie nicht möchten, würde ich den
[line.rstrip() for line in f]
Ansatz empfehlen, da dadurch vermieden wird, dass zwei Listen mit allen Zeilen im Speicher bleiben .Es gibt eine zusätzliche Option, um die gewünschte Ausgabe zu erhalten, diese ist jedoch eher "suboptimal":
read
die vollständige Datei in einer Zeichenfolge und dann in Zeilenumbrüche aufgeteilt:oder:
Diese kümmern sich automatisch um die nachfolgenden Zeilenumbrüche, da das
split
Zeichen nicht enthalten ist. Sie sind jedoch nicht ideal, da Sie die Datei als Zeichenfolge und als Liste der Zeilen im Speicher behalten!Zusammenfassung
with open(...) as f
Sie diese Option beim Öffnen von Dateien, da Sie sich nicht darum kümmern müssen, die Datei selbst zu schließen, und sie auch dann geschlossen wird, wenn eine Ausnahme auftritt.file
Objekte unterstützen das Iterationsprotokoll, sodass das zeilenweise Lesen einer Datei so einfach ist wiefor line in the_file_object:
.readlines()
aber wenn Sie die Zeilen verarbeiten möchten, bevor Sie sie in der Liste speichern, würde ich ein einfaches Listenverständnis empfehlen.quelle
Saubere und pythonische Art, die Zeilen einer Datei in eine Liste einzulesen
In erster Linie sollten Sie sich darauf konzentrieren, Ihre Datei zu öffnen und ihren Inhalt effizient und pythonisch zu lesen. Hier ist ein Beispiel dafür, wie ich persönlich NICHT bevorzuge:
Stattdessen bevorzuge ich die folgende Methode zum Öffnen von Dateien zum Lesen und Schreiben, da sie sehr sauber ist und keinen zusätzlichen Schritt zum Schließen der Datei erfordert, sobald Sie sie verwendet haben. In der folgenden Anweisung öffnen wir die Datei zum Lesen und weisen sie der Variablen 'infile' zu. Sobald der Code in dieser Anweisung ausgeführt wurde, wird die Datei automatisch geschlossen.
Jetzt müssen wir uns darauf konzentrieren, diese Daten in eine zu bringen Python-Liste aufzunehmen, da sie iterierbar, effizient und flexibel sind. In Ihrem Fall besteht das gewünschte Ziel darin, jede Zeile der Textdatei in ein separates Element zu bringen. Um dies zu erreichen, verwenden wir die splitlines () -Methode wie folgt:
Das Endprodukt:
Testen unseres Codes:
quelle
Die in Python 3.4 eingeführte
pathlib
Methode bietet eine sehr praktische Methode zum Einlesen von Text aus Dateien:(Der
splitlines
Aufruf verwandelt ihn von einer Zeichenfolge, die den gesamten Inhalt der Datei enthält, in eine Liste von Zeilen in der Datei.)pathlib
hat viele praktische Annehmlichkeiten.read_text
ist nett und prägnant, und Sie müssen sich keine Gedanken über das Öffnen und Schließen der Datei machen. Wenn Sie mit der Datei nur alles auf einmal lesen müssen, ist dies eine gute Wahl.quelle
Hier ist eine weitere Option, bei der Listenverständnisse für Dateien verwendet werden.
Dies sollte effizienter sein, da der größte Teil der Arbeit im Python-Interpreter erledigt wird.
quelle
rstrip()
entfernt möglicherweise alle nachgestellten Leerzeichen, nicht nur die\n
; verwenden.rstrip('\n')
.Jetzt ist Variable out eine Liste (Array) von dem, was Sie wollen. Sie könnten entweder tun:
Oder:
Sie erhalten die gleichen Ergebnisse.
quelle
Lesen und Schreiben von Textdateien mit Python 2 und Python 3; es funktioniert mit Unicode
Dinge zu beachten:
with
ist ein sogenannter Kontextmanager . Es stellt sicher, dass die geöffnete Datei wieder geschlossen wird..strip()
oder.rstrip()
nicht reproduzieren können,lines
da sie auch den Leerraum entfernen.Allgemeine Dateienden
.txt
Erweitertes Schreiben / Lesen von Dateien
Für Ihre Anwendung kann Folgendes wichtig sein:
Siehe auch: Vergleich der Datenserialisierungsformate
Wenn Sie eher nach einer Möglichkeit suchen, Konfigurationsdateien zu erstellen, lesen Sie möglicherweise meinen kurzen Artikel Konfigurationsdateien in Python .
quelle
Eine andere Option ist
numpy.genfromtxt
zum Beispiel:Dadurch wird
data
ein NumPy-Array mit so vielen Zeilen erstellt, wie in Ihrer Datei enthalten sind.quelle
Wenn Sie eine Datei über die Befehlszeile oder über stdin lesen möchten, können Sie auch das folgende
fileinput
Modul verwenden:Übergeben Sie Dateien wie folgt:
Lesen Sie hier mehr: http://docs.python.org/2/library/fileinput.html
quelle
Der einfachste Weg, es zu tun
Ein einfacher Weg ist:
In einer Zeile würde das geben:
Dies ist jedoch ziemlich ineffizient, da dadurch 2 Versionen des Inhalts im Speicher gespeichert werden (wahrscheinlich kein großes Problem für kleine Dateien, aber immer noch). [Danke Mark Amery].
Es gibt zwei einfachere Möglichkeiten:
pathlib
, erstellen Sie besser einen Pfad für Ihre Datei, den Sie für andere Vorgänge in Ihrem Programm verwenden können:quelle
.read().splitlines()
in keiner Weise "einfacher" als nur das Anrufen.readlines()
. Zum anderen ist es speichereffizient; Sie speichern unnötigerweise zwei Versionen des Dateiinhalts (die von zurückgegebene einzelne Zeichenfolge.read()
und die Liste der von zurückgegebenen Zeichenfolgensplitlines()
) gleichzeitig im Speicher.Verwenden Sie einfach die Funktionen splitlines (). Hier ist ein Beispiel.
In der Ausgabe haben Sie die Liste der Zeilen.
quelle
.readlines()
. Dadurch werden zwei Kopien des Dateiinhalts gleichzeitig gespeichert (eine als einzelne große Zeichenfolge, eine als Liste von Zeilen).Wenn Sie mit einer sehr großen / riesigen Datei konfrontiert werden und schneller lesen möchten (stellen Sie sich vor, Sie befinden sich in einem Topcoder / Hackerrank-Codierungswettbewerb), lesen Sie möglicherweise einen erheblich größeren Zeilenabschnitt gleichzeitig in einen Speicherpuffer Iterieren Sie einfach Zeile für Zeile auf Dateiebene.
quelle
process(line)
ist eine Funktion, die Sie implementieren müssen, um die Daten zu verarbeiten. Anstelle dieser Zeileprint(line)
wird beispielsweise jede Zeile aus dem Zeilenpuffer gedruckt , wenn Sie sie verwenden .Die einfachsten Möglichkeiten, dies mit einigen zusätzlichen Vorteilen zu tun, sind:
oder
oder
In diesem Fall
set
müssen wir uns daran erinnern, dass wir die Zeilenreihenfolge nicht beibehalten und die duplizierten Zeilen entfernen.Unten habe ich eine wichtige Ergänzung von @MarkAmery hinzugefügt :
quelle
.close
noch einewith
Anweisung verwenden, wird die Datei in einigen Python-Implementierungen nach dem Lesen möglicherweise nicht geschlossen, und Ihr Prozess verliert ein offenes Dateihandle. In CPython (der normalen Python-Implementierung, die die meisten Benutzer verwenden) ist dies kein Problem, da das Dateiobjekt sofort durch Müll gesammelt wird und die Datei geschlossen wird. Es wird jedoch allgemein als bewährte Methode angesehen, dieswith open('filename') as f: lines = list(f)
sicherzustellen Die Datei wird geschlossen, unabhängig davon, welche Python-Implementierung Sie verwenden.Benutze das:
data
ist ein Datenrahmentyp und verwendet Werte, um ndarray abzurufen. Sie können eine Liste auch mit abrufenarray.tolist()
.quelle
pandas.read_csv()
ist zum Lesen von CSV- Daten, wie ist es hier angebracht?Gliederung und Zusammenfassung
filename
Führen Sie mit a , indem Sie die Datei von einemPath(filename)
Objekt aus oder direkt mitopen(filename) as f
bearbeiten, einen der folgenden Schritte aus:list(fileinput.input(filename))
with path.open() as f
anrufenf.readlines()
list(f)
path.read_text().splitlines()
path.read_text().splitlines(keepends=True)
fileinput.input
oderf
undlist.append
jede Zeile einzelnf
zu einem gebundenenlist.extend
Verfahrenf
in einem ListenverständnisIch erkläre den Anwendungsfall für jeden unten.
Dies ist eine ausgezeichnete Frage. Lassen Sie uns zunächst einige Beispieldaten erstellen:
Dateiobjekte sind faule Iteratoren, also iterieren Sie einfach darüber.
Wenn Sie mehrere Dateien haben, verwenden Sie alternativ einen
fileinput.input
anderen faulen Iterator. Mit nur einer Datei:oder übergeben Sie für mehrere Dateien eine Liste mit Dateinamen:
Wieder
f
undfileinput.input
darüber sind / return faule Iteratoren. Sie können einen Iterator nur einmal verwenden. Um Funktionscode bereitzustellen und gleichzeitig die Ausführlichkeit zu vermeiden, verwende ich den etwas knapperenfileinput.input(filename)
Punkt, der von hier aus vorgeschlagen wird.Ah, aber du willst es aus irgendeinem Grund in einer Liste? Ich würde das nach Möglichkeit vermeiden. Aber wenn Sie darauf bestehen ... geben Sie das Ergebnis einfach
fileinput.input(filename)
anlist
:Eine andere direkte Antwort ist ein Aufruf
f.readlines
, der den Inhalt der Datei zurückgibt (bis zu einer optionalenhint
Anzahl von Zeichen, so dass Sie könnten diese in mehrere Listen auf diese Weise brechen).Sie können auf zwei Arten zu diesem Dateiobjekt gelangen. Eine Möglichkeit besteht darin, den Dateinamen an das
open
eingebaute zu übergeben:oder mit dem neuen Path-Objekt aus dem
pathlib
Modul (das ich sehr gern habe und von nun an verwenden werde):list
verbraucht auch den Datei-Iterator und gibt eine Liste zurück - eine ziemlich direkte Methode:Wenn es Ihnen nichts ausmacht, den gesamten Text vor dem Teilen als einzelne Zeichenfolge in den Speicher einzulesen, können Sie dies als Einzeiler mit dem
Path
Objekt und dersplitlines()
Zeichenfolgenmethode tun .splitlines
Entfernt standardmäßig die Zeilenumbrüche:Wenn Sie die Zeilenumbrüche behalten möchten, übergeben Sie
keepends=True
:Das ist etwas albern, da wir das Endergebnis mit verschiedenen Methoden leicht demonstriert haben. Möglicherweise müssen Sie jedoch die Zeilen filtern oder bearbeiten, während Sie Ihre Liste erstellen. Lassen Sie uns diese Anfrage also humorisieren.
Mit
list.append
können Sie jede Zeile filtern oder bearbeiten, bevor Sie sie anhängen:Die Verwendung
list.extend
wäre etwas direkter und möglicherweise nützlich, wenn Sie eine bereits vorhandene Liste haben:Oder idiomatischer, wir könnten stattdessen ein Listenverständnis verwenden und es gegebenenfalls abbilden und filtern:
Oder noch direkter, um den Kreis zu schließen, übergeben Sie ihn einfach an die Liste, um eine neue Liste direkt zu erstellen, ohne die Linien zu bearbeiten:
Fazit
Sie haben viele Möglichkeiten gesehen, Zeilen aus einer Datei in eine Liste zu übertragen, aber ich würde empfehlen, dass Sie vermeiden, große Datenmengen in einer Liste zu materialisieren, und stattdessen Pythons verzögerte Iteration verwenden, um die Daten nach Möglichkeit zu verarbeiten.
Das heißt, bevorzugen
fileinput.input
oderwith path.open() as f
.quelle
Falls das Dokument auch leere Zeilen enthält, lese ich den Inhalt gerne ein und leite ihn durch
filter
, um leere Zeichenfolgenelemente zu vermeidenquelle
Sie können auch den Befehl loadtxt in NumPy verwenden. Dies sucht nach weniger Bedingungen als genfromtxt, sodass es möglicherweise schneller ist.
quelle
Ich benutze gerne folgendes. Lesen Sie die Zeilen sofort.
Oder mit Listenverständnis:
quelle
readlines()
, was sogar eine Speicherstrafe verursacht. Sie können es einfach entfernen, da das Durchlaufen einer (Text-) Datei jede Zeile der Reihe nach ergibt.with
Anweisung verwenden, um die Datei zu öffnen (und implizit zu schließen).Ich würde eine der unten genannten Methoden ausprobieren. Die von mir verwendete Beispieldatei hat den Namen
dummy.txt
. Die Datei finden Sie hier . Ich gehe davon aus, dass sich die Datei im selben Verzeichnis wie der Code befindet (Sie können sie ändernfpath
, um den richtigen Dateinamen und Ordnerpfad einzuschließen.)In beiden unten genannten Beispielen wird die gewünschte Liste von angegeben
lst
.1.> Erste Methode :
2.> Bei der zweiten Methode kann das Modul csv.reader aus der Python Standard Library verwendet werden :
Sie können eine der beiden Methoden verwenden. Die für die Erstellung benötigte Zeit
lst
ist bei beiden Methoden nahezu gleich.quelle
delimiter=' '
Argument?Hier ist eine Python (3) Helfer
Bibliothek- Klasse, die ich Datei zu vereinfachen , verwenden I / O:Sie würden dann die
FileIO.lines
Funktion wie folgt verwenden:Beachten Sie, dass die Parameter
mode
("r"
standardmäßig) undfilter_fn
( standardmäßig auf Leerzeilen prüfen) optional sind.Man könnte sogar die entfernen
read
,write
unddelete
Methoden und die einfach verlassenFileIO.lines
, oder sogar in ein separates Verfahren genannt drehenread_lines
.quelle
lines = FileIO.lines(path)
wirklich einfacher genug, alswith open(path) as f: lines = f.readlines()
die Existenz dieses Helfers zu rechtfertigen? Sie sparen beispielsweise 17 Zeichen pro Anruf. (Und die meiste Zeit möchten Sie aus Leistungs- und Speichergründen ein Dateiobjekt direkt durchlaufen, anstatt seine Zeilen trotzdem in eine Liste einzulesen, sodass Sie dies nicht einmal oft verwenden möchten!) Ich bin es Oft ein Fan von kleinen Utility-Funktionen, aber für mich ist es einfach unnötig, eine neue Art zu schreiben, um etwas zu schreiben, das mit der Standardbibliothek bereits kurz und einfach ist.Befehlszeilenversion
Laufen Sie mit:
quelle