I/O and Network
General I/O
Base.stdout — Constantstdout::IOGlobale Variable, die auf den Standardausgabestrom verweist.
Base.stderr — Constantstderr::IOGlobale Variable, die auf den Standardfehlerstrom verweist.
Base.stdin — Constantstdin::IOGlobale Variable, die auf den Standard-Eingabestrom verweist.
Base.read — Methodread(filename::AbstractString)Lese den gesamten Inhalt einer Datei als Vector{UInt8}.
read(filename::AbstractString, String)Lese den gesamten Inhalt einer Datei als Zeichenfolge.
read(filename::AbstractString, args...)Öffne eine Datei und lese ihren Inhalt. args wird an read übergeben: dies entspricht open(io->read(io, args...), filename).
Base.write — Methodwrite(filename::AbstractString, content)Schreibt die kanonische binäre Darstellung von content in eine Datei, die erstellt wird, wenn sie noch nicht existiert, oder überschrieben wird, wenn sie bereits existiert.
Gibt die Anzahl der in die Datei geschriebenen Bytes zurück.
Base.open — Functionopen(f::Function, args...; kwargs...)Wenden Sie die Funktion f auf das Ergebnis von open(args...; kwargs...) an und schließen Sie den resultierenden Dateideskriptor nach Abschluss.
Beispiele
julia> write("myfile.txt", "Hello world!");
julia> open(io->read(io, String), "myfile.txt")
"Hello world!"
julia> rm("myfile.txt")open(filename::AbstractString; lock = true, keywords...) -> IOStreamÖffnen Sie eine Datei in einem Modus, der durch fünf boolesche Schlüsselwortargumente angegeben ist:
| Schlüsselwort | Beschreibung | Standard |
|---|---|---|
read | zum Lesen öffnen | !write |
write | zum Schreiben öffnen | truncate | append |
create | erstellen, wenn nicht vorhanden | !read & write | truncate | append |
truncate | auf null Größe kürzen | !read & write |
append | zum Ende suchen | false |
Der Standardwert, wenn keine Schlüsselwörter übergeben werden, ist, Dateien nur zum Lesen zu öffnen. Gibt einen Stream zum Zugreifen auf die geöffnete Datei zurück.
Das Schlüsselwortargument lock steuert, ob Operationen für einen sicheren mehrstufigen Zugriff gesperrt werden.
Das Argument lock ist seit Julia 1.5 verfügbar.
open(filename::AbstractString, [mode::AbstractString]; lock = true) -> IOStreamAlternative Syntax für open, bei der ein stringbasierter Modus-Spezifizierer anstelle der fünf Booleans verwendet wird. Die Werte von mode entsprechen denen von fopen(3) oder Perl open und sind äquivalent zu den folgenden booleschen Gruppen:
| Modus | Beschreibung | Schlüsselwörter |
|---|---|---|
r | lesen | keine |
w | schreiben, erstellen, truncieren | write = true |
a | schreiben, erstellen, anhängen | append = true |
r+ | lesen, schreiben | read = true, write = true |
w+ | lesen, schreiben, erstellen, truncieren | truncate = true, read = true |
a+ | lesen, schreiben, erstellen, anhängen | append = true, read = true |
Das Schlüsselwortargument lock steuert, ob Operationen für einen sicheren Multi-Thread-Zugriff gesperrt werden.
Beispiele
julia> io = open("myfile.txt", "w");
julia> write(io, "Hello world!");
julia> close(io);
julia> io = open("myfile.txt", "r");
julia> read(io, String)
"Hello world!"
julia> write(io, "This file is read only")
ERROR: ArgumentError: write failed, IOStream is not writeable
[...]
julia> close(io)
julia> io = open("myfile.txt", "a");
julia> write(io, "This stream is not read only")
28
julia> close(io)
julia> rm("myfile.txt")Das lock-Argument ist seit Julia 1.5 verfügbar.
open(fd::OS_HANDLE) -> IONehmen Sie einen rohen Dateideskriptor, wickeln Sie ihn in einen Julia-bewussten IO-Typ und übernehmen Sie das Eigentum des fd-Handels. Rufen Sie open(Libc.dup(fd)) auf, um die Eigentumserfassung des ursprünglichen Handgriffs zu vermeiden.
Rufen Sie dies nicht auf einem Handle auf, das bereits von einem anderen Teil des Systems besessen wird.
open(command, mode::AbstractString, stdio=devnull)Führen Sie command asynchron aus. Ähnlich wie open(command, stdio; read, write), jedoch werden die Lese- und Schreibflags über eine Moduszeichenfolge anstelle von Schlüsselwortargumenten angegeben. Mögliche Moduszeichenfolgen sind:
| Modus | Beschreibung | Schlüsselwörter |
|---|---|---|
r | lesen | keine |
w | schreiben | write = true |
r+ | lesen, schreiben | read = true, write = true |
w+ | lesen, schreiben | read = true, write = true |
open(command, stdio=devnull; write::Bool = false, read::Bool = !write)Beginnen Sie mit der asynchronen Ausführung von command und geben Sie ein process::IO-Objekt zurück. Wenn read wahr ist, stammen die Lesevorgänge vom Standardausgang des Prozesses, und stdio gibt optional den Standard-Eingabestrom des Prozesses an. Wenn write wahr ist, gehen die Schreibvorgänge an den Standard-Eingabestrom des Prozesses, und stdio gibt optional den Standard-Ausgangsstrom des Prozesses an. Der Standard-Fehlerstrom des Prozesses ist mit dem aktuellen globalen stderr verbunden.
open(f::Function, command, args...; kwargs...)Ähnlich wie open(command, args...; kwargs...), aber ruft f(stream) auf dem resultierenden Prozessstream auf, schließt dann den Eingabestream und wartet, bis der Prozess abgeschlossen ist. Gibt den Wert zurück, den f bei Erfolg zurückgibt. Wirft einen Fehler, wenn der Prozess fehlgeschlagen ist oder wenn der Prozess versucht, etwas auf stdout auszugeben.
Base.IOStream — TypeIOStreamEin gepufferter IO-Stream, der einen OS-Dateideskriptor umschließt. Wird hauptsächlich verwendet, um Dateien darzustellen, die von open zurückgegeben werden.
Base.IOBuffer — TypeIOBuffer([data::AbstractVector{UInt8}]; keywords...) -> IOBufferErstellt einen In-Memory-I/O-Stream, der optional auf einem bereits vorhandenen Array arbeiten kann.
Es können optionale Schlüsselwortargumente übergeben werden:
read,write,append: beschränkt die Operationen auf den Puffer; sieheopenfür Details.truncate: kürzt die Puffergröße auf null Länge.maxsize: gibt eine Größe an, über die der Puffer nicht vergrößert werden darf.sizehint: schlägt eine Kapazität des Puffers vor (datamusssizehint!(data, size)implementieren).
Wenn data nicht angegeben ist, ist der Puffer standardmäßig sowohl lesbar als auch schreibbar.
Beispiele
julia> io = IOBuffer();
julia> write(io, "JuliaLang ist eine GitHub-Organisation.", " Es hat viele Mitglieder.")
56
julia> String(take!(io))
"JuliaLang ist eine GitHub-Organisation. Es hat viele Mitglieder."
julia> io = IOBuffer(b"JuliaLang ist eine GitHub-Organisation.")
IOBuffer(data=UInt8[...], readable=true, writable=false, seekable=true, append=false, size=35, maxsize=Inf, ptr=1, mark=-1)
julia> read(io, String)
"JuliaLang ist eine GitHub-Organisation."
julia> write(io, "Das ist nicht schreibbar.")
ERROR: ArgumentError: ensureroom failed, IOBuffer ist nicht schreibbar
julia> io = IOBuffer(UInt8[], read=true, write=true, maxsize=34)
IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=0, maxsize=34, ptr=1, mark=-1)
julia> write(io, "JuliaLang ist eine GitHub-Organisation.")
34
julia> String(take!(io))
"JuliaLang ist eine GitHub-Organisation"
julia> length(read(IOBuffer(b"data", read=true, truncate=false)))
4
julia> length(read(IOBuffer(b"data", read=true, truncate=true)))
0IOBuffer(string::String)Erstellen Sie einen schreibgeschützten IOBuffer für die Daten, die dem angegebenen String zugrunde liegen.
Beispiele
julia> io = IOBuffer("Haho");
julia> String(take!(io))
"Haho"
julia> String(take!(io))
"Haho"Base.take! — Methodtake!(b::IOBuffer)Erhalten Sie den Inhalt eines IOBuffer als Array. Danach wird der IOBuffer auf seinen ursprünglichen Zustand zurückgesetzt.
Beispiele
julia> io = IOBuffer();
julia> write(io, "JuliaLang ist eine GitHub-Organisation.", " Es hat viele Mitglieder.")
56
julia> String(take!(io))
"JuliaLang ist eine GitHub-Organisation. Es hat viele Mitglieder."Base.Pipe — TypePipe()Konstruiere ein nicht initialisiertes Pipe-Objekt, insbesondere für die IO-Kommunikation zwischen mehreren Prozessen.
Das entsprechende Ende der Pipe wird automatisch initialisiert, wenn das Objekt beim Erzeugen von Prozessen verwendet wird. Dies kann nützlich sein, um einfach Referenzen in Prozess-Pipelines zu erhalten, z.B.:
julia> err = Pipe()
# Nach diesem `err` wird initialisiert und Sie können `foo`'s
# stderr aus der `err`-Pipe lesen oder `err` an andere Pipelines übergeben.
julia> run(pipeline(pipeline(`foo`, stderr=err), `cat`), wait=false)
# Zerstören Sie jetzt die Schreibhälfte der Pipe, damit die Lesehälfte EOF erhält
julia> closewrite(err)
julia> read(err, String)
"stderr messages"Siehe auch Base.link_pipe!.
Base.link_pipe! — Functionlink_pipe!(pipe; reader_supports_async=false, writer_supports_async=false)Initialisiere pipe und verlinke den in Endpunkt mit dem out Endpunkt. Die Schlüsselwortargumente reader_supports_async/writer_supports_async entsprechen OVERLAPPED unter Windows und O_NONBLOCK unter POSIX-Systemen. Sie sollten true sein, es sei denn, sie werden von einem externen Programm verwendet (z. B. die Ausgabe eines mit run ausgeführten Befehls).
Base.fdio — Functionfdio([name::AbstractString, ]fd::Integer[, own::Bool=false]) -> IOStreamErstellt ein IOStream Objekt aus einem ganzzahligen Dateideskriptor. Wenn own true ist, wird das Schließen dieses Objekts den zugrunde liegenden Deskriptor schließen. Standardmäßig wird ein IOStream geschlossen, wenn er garbage collected wird. name ermöglicht es Ihnen, den Deskriptor mit einer benannten Datei zu verknüpfen.
Base.flush — Functionflush(stream)Alle derzeit gepufferten Schreibvorgänge an den angegebenen Stream übermitteln.
Base.close — Functionclose(stream)Schließt einen I/O-Stream. Führt zuerst ein flush durch.
Base.closewrite — Functionclosewrite(stream)Fährt die Schreibhälfte eines voll-duplex I/O-Streams herunter. Führt zuerst einen flush durch. Benachrichtigt das andere Ende, dass keine weiteren Daten in die zugrunde liegende Datei geschrieben werden. Dies wird nicht von allen IO-Typen unterstützt.
Wenn implementiert, bewirkt closewrite, dass nachfolgende read- oder eof-Aufrufe, die blockieren würden, stattdessen EOF auslösen oder true zurückgeben. Wenn der Stream bereits geschlossen ist, ist dies idempotent.
Beispiele
julia> io = Base.BufferStream(); # dies blockiert niemals, sodass wir im selben Task lesen und schreiben können
julia> write(io, "request");
julia> # der Aufruf von `read(io)` hier würde für immer blockieren
julia> closewrite(io);
julia> read(io, String)
"request"Base.write — Functionwrite(io::IO, x)Schreiben Sie die kanonische binäre Darstellung eines Wertes in den angegebenen I/O-Stream oder die Datei. Gibt die Anzahl der in den Stream geschriebenen Bytes zurück. Siehe auch print, um eine Textdarstellung zu schreiben (mit einer Kodierung, die von io abhängen kann).
Die Endianness des geschriebenen Wertes hängt von der Endianness des Host-Systems ab. Konvertieren Sie zu/von einer festen Endianness beim Schreiben/Lesen (z. B. unter Verwendung von htol und ltoh), um Ergebnisse zu erhalten, die plattformübergreifend konsistent sind.
Sie können mehrere Werte mit demselben write-Aufruf schreiben. d.h. die folgenden sind äquivalent:
write(io, x, y...)
write(io, x) + write(io, y...)Beispiele
Konsistente Serialisierung:
julia> fname = tempname(); # zufälliger temporärer Dateiname
julia> open(fname,"w") do f
# Stellen Sie sicher, dass wir 64-Bit-Ganzzahlen in kleiner Endian-Byte-Reihenfolge schreiben
write(f,htol(Int64(42)))
end
8
julia> open(fname,"r") do f
# Konvertieren Sie zurück in die Host-Byte-Reihenfolge und den Host-Ganzzahltyp
Int(ltoh(read(f,Int64)))
end
42Zusammenführen von Schreibaufrufen:
julia> io = IOBuffer();
julia> write(io, "JuliaLang ist eine GitHub-Organisation.", " Es hat viele Mitglieder.")
56
julia> String(take!(io))
"JuliaLang ist eine GitHub-Organisation. Es hat viele Mitglieder."
julia> write(io, "Manchmal schreiben diese Mitglieder") + write(io, " Dokumentation.")
44
julia> String(take!(io))
"Manchmal schreiben diese Mitglieder Dokumentation."Benutzerdefinierte einfache Datentypen ohne write-Methoden können geschrieben werden, wenn sie in einem Ref verpackt sind:
julia> struct MyStruct; x::Float64; end
julia> io = IOBuffer()
IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=0, maxsize=Inf, ptr=1, mark=-1)
julia> write(io, Ref(MyStruct(42.0)))
8
julia> seekstart(io); read!(io, Ref(MyStruct(NaN)))
Base.RefValue{MyStruct}(MyStruct(42.0))Base.read — Functionread(io::IO, T)Lese einen einzelnen Wert des Typs T von io in kanonischer binärer Darstellung.
Beachte, dass Julia die Endianness nicht für dich konvertiert. Verwende ntoh oder ltoh zu diesem Zweck.
read(io::IO, String)Lese den gesamten Inhalt von io als String (siehe auch readchomp).
Beispiele
julia> io = IOBuffer("JuliaLang ist eine GitHub-Organisation");
julia> read(io, Char)
'J': ASCII/Unicode U+004A (Kategorie Lu: Buchstabe, groß)
julia> io = IOBuffer("JuliaLang ist eine GitHub-Organisation");
julia> read(io, String)
"JuliaLang ist eine GitHub-Organisation"read(filename::AbstractString)Lese den gesamten Inhalt einer Datei als Vector{UInt8}.
read(filename::AbstractString, String)Lese den gesamten Inhalt einer Datei als Zeichenfolge.
read(filename::AbstractString, args...)Öffne eine Datei und lese ihren Inhalt. args wird an read übergeben: dies entspricht open(io->read(io, args...), filename).
read(s::IO, nb=typemax(Int))Lese höchstens nb Bytes von s und gebe einen Vector{UInt8} der gelesenen Bytes zurück.
read(s::IOStream, nb::Integer; all=true)Liest höchstens nb Bytes von s und gibt einen Vector{UInt8} der gelesenen Bytes zurück.
Wenn all true ist (der Standardwert), blockiert diese Funktion wiederholt, um alle angeforderten Bytes zu lesen, bis ein Fehler oder das Ende der Datei auftritt. Wenn all false ist, wird höchstens ein read-Aufruf durchgeführt, und die Menge der zurückgegebenen Daten ist geräteabhängig. Beachten Sie, dass nicht alle Streamtypen die all-Option unterstützen.
read(command::Cmd)Führen Sie command aus und geben Sie die resultierende Ausgabe als ein Array von Bytes zurück.
read(command::Cmd, String)Führen Sie command aus und geben Sie die resultierende Ausgabe als String zurück.
Base.read! — Functionread!(stream::IO, array::AbstractArray)
read!(filename::AbstractString, array::AbstractArray)Lese Binärdaten aus einem I/O-Stream oder einer Datei und fülle array.
Base.readbytes! — Functionreadbytes!(stream::IO, b::AbstractVector{UInt8}, nb=length(b))Lese höchstens nb Bytes aus stream in b und gebe die Anzahl der gelesenen Bytes zurück. Die Größe von b wird bei Bedarf erhöht (d.h. wenn nb größer als length(b) ist und genügend Bytes gelesen werden konnten), aber sie wird niemals verringert.
readbytes!(stream::IOStream, b::AbstractVector{UInt8}, nb=length(b); all::Bool=true)Liest höchstens nb Bytes aus stream in b und gibt die Anzahl der gelesenen Bytes zurück. Die Größe von b wird bei Bedarf erhöht (d.h. wenn nb größer als length(b) ist und genügend Bytes gelesen werden konnten), aber sie wird niemals verringert.
Wenn all true ist (der Standardwert), blockiert diese Funktion wiederholt, um alle angeforderten Bytes zu lesen, bis ein Fehler oder das Ende der Datei auftritt. Wenn all false ist, wird höchstens ein read-Aufruf durchgeführt, und die Menge der zurückgegebenen Daten ist geräteabhängig. Beachten Sie, dass nicht alle Streamtypen die all-Option unterstützen.
Base.unsafe_read — Functionunsafe_read(io::IO, ref, nbytes::UInt)Kopiere nbytes aus dem IO-Stream-Objekt in ref (konvertiert in einen Zeiger).
Es wird empfohlen, dass Subtypen T<:IO die folgende Methodensignatur überschreiben, um effizientere Implementierungen bereitzustellen: unsafe_read(s::T, p::Ptr{UInt8}, n::UInt)
Base.unsafe_write — Functionunsafe_write(io::IO, ref, nbytes::UInt)Kopiere nbytes von ref (in einen Zeiger umgewandelt) in das IO-Objekt.
Es wird empfohlen, dass Untertypen T<:IO die folgende Methodensignatur überschreiben, um effizientere Implementierungen bereitzustellen: unsafe_write(s::T, p::Ptr{UInt8}, n::UInt)
Base.readeach — Functionreadeach(io::IO, T)Gibt ein iterierbares Objekt zurück, das read(io, T) liefert.
Siehe auch skipchars, eachline, readuntil.
readeach erfordert Julia 1.6 oder höher.
Beispiele
julia> io = IOBuffer("JuliaLang ist eine GitHub-Organisation.\n Es hat viele Mitglieder.\n");
julia> for c in readeach(io, Char)
c == '\n' && break
print(c)
end
JuliaLang ist eine GitHub-Organisation.Base.peek — Functionpeek(stream[, T=UInt8])Lese und gebe einen Wert des Typs T aus einem Stream zurück, ohne die aktuelle Position im Stream zu verschieben. Siehe auch startswith(stream, char_or_string).
Beispiele
julia> b = IOBuffer("julia");
julia> peek(b)
0x6a
julia> position(b)
0
julia> peek(b, Char)
'j': ASCII/Unicode U+006A (Kategorie Ll: Buchstabe, Kleinbuchstabe)Die Methode, die einen Typ akzeptiert, erfordert Julia 1.5 oder höher.
Base.position — Functionposition(l::Lexer)Gibt die aktuelle Position zurück.
position(en)Holen Sie sich die aktuelle Position eines Streams.
Beispiele
julia> io = IOBuffer("JuliaLang ist eine GitHub-Organisation.");
julia> seek(io, 5);
julia> position(io)
5
julia> skip(io, 10);
julia> position(io)
15
julia> seekend(io);
julia> position(io)
35Base.seek — Functionseek(s, pos)Suchen Sie einen Stream an die angegebene Position.
Beispiele
julia> io = IOBuffer("JuliaLang ist eine GitHub-Organisation.");
julia> seek(io, 5);
julia> read(io, Char)
'L': ASCII/Unicode U+004C (Kategorie Lu: Buchstabe, Großbuchstabe)Base.seekstart — Functionseekstart(s)Bewege einen Stream zu seinem Anfang.
Beispiele
julia> io = IOBuffer("JuliaLang ist eine GitHub-Organisation.");
julia> seek(io, 5);
julia> read(io, Char)
'L': ASCII/Unicode U+004C (Kategorie Lu: Buchstabe, Großbuchstabe)
julia> seekstart(io);
julia> read(io, Char)
'J': ASCII/Unicode U+004A (Kategorie Lu: Buchstabe, Großbuchstabe)Base.seekend — Functionseekend(s)Bewege einen Stream zu seinem Ende.
Base.skip — Functionskip(s, offset)Suchen Sie einen Stream relativ zur aktuellen Position.
Beispiele
julia> io = IOBuffer("JuliaLang ist eine GitHub-Organisation.");
julia> seek(io, 5);
julia> skip(io, 10);
julia> read(io, Char)
'G': ASCII/Unicode U+0047 (Kategorie Lu: Buchstabe, Großbuchstabe)Base.mark — Functionmark(s::IO)Fügen Sie eine Markierung an der aktuellen Position des Streams s hinzu. Gibt die markierte Position zurück.
Base.unmark — Functionunmark(s::IO)Entfernt ein Markierung von dem Stream s. Gibt true zurück, wenn der Stream markiert war, andernfalls false.
Base.reset — Methodreset(s::IO)Setzt einen Stream s auf eine zuvor markierte Position zurück und entfernt die Markierung. Gibt die zuvor markierte Position zurück. Wirft einen Fehler, wenn der Stream nicht markiert ist.
Base.ismarked — FunctionBase.eof — Functioneof(stream) -> BoolTesten, ob ein I/O-Stream am Ende der Datei ist. Wenn der Stream noch nicht erschöpft ist, wird diese Funktion blockieren, um auf weitere Daten zu warten, falls erforderlich, und dann false zurückgeben. Daher ist es immer sicher, ein Byte zu lesen, nachdem eof false zurückgegeben hat. eof gibt false zurück, solange gepufferte Daten noch verfügbar sind, selbst wenn das entfernte Ende einer Verbindung geschlossen ist.
Beispiele
julia> b = IOBuffer("my buffer");
julia> eof(b)
false
julia> seekend(b);
julia> eof(b)
trueBase.isreadonly — Functionisreadonly(io) -> BoolBestimmen Sie, ob ein Stream schreibgeschützt ist.
Beispiele
julia> io = IOBuffer("JuliaLang ist eine GitHub-Organisation");
julia> isreadonly(io)
true
julia> io = IOBuffer();
julia> isreadonly(io)
falseBase.iswritable — Functioniswritable(path::String)Gibt true zurück, wenn die Zugriffsberechtigungen für den angegebenen path das Schreiben durch den aktuellen Benutzer erlauben.
Diese Berechtigung kann sich ändern, bevor der Benutzer open aufruft, daher wird empfohlen, einfach open allein aufzurufen und den Fehler zu behandeln, falls dies fehlschlägt, anstatt zuerst iswritable aufzurufen.
Derzeit kann diese Funktion die Dateisystem-ACLs unter Windows nicht korrekt abfragen, daher kann sie falsche Ergebnisse zurückgeben.
Diese Funktion erfordert mindestens Julia 1.11.
Siehe auch ispath, isexecutable, isreadable.
iswritable(io) -> BoolGibt false zurück, wenn das angegebene IO-Objekt nicht beschreibbar ist.
Beispiele
julia> open("myfile.txt", "w") do io
print(io, "Hello world!");
iswritable(io)
end
true
julia> open("myfile.txt", "r") do io
iswritable(io)
end
false
julia> rm("myfile.txt")Base.isreadable — Functionisreadable(path::String)Gibt true zurück, wenn die Zugriffsberechtigungen für den angegebenen path das Lesen durch den aktuellen Benutzer erlauben.
Diese Berechtigung kann sich ändern, bevor der Benutzer open aufruft, daher wird empfohlen, einfach open allein aufzurufen und den Fehler zu behandeln, falls dies fehlschlägt, anstatt zuerst isreadable aufzurufen.
Derzeit kann diese Funktion die Dateisystem-ACLs unter Windows nicht korrekt abfragen, daher kann sie falsche Ergebnisse zurückgeben.
Diese Funktion erfordert mindestens Julia 1.11.
Siehe auch ispath, isexecutable, iswritable.
isreadable(io) -> BoolGibt false zurück, wenn das angegebene IO-Objekt nicht lesbar ist.
Beispiele
julia> open("myfile.txt", "w") do io
print(io, "Hello world!");
isreadable(io)
end
false
julia> open("myfile.txt", "r") do io
isreadable(io)
end
true
julia> rm("myfile.txt")Base.isexecutable — Functionisexecutable(path::String)Gibt true zurück, wenn der angegebene path ausführbare Berechtigungen hat.
Diese Berechtigung kann sich ändern, bevor der Benutzer path ausführt, daher wird empfohlen, die Datei auszuführen und den Fehler zu behandeln, falls dies fehlschlägt, anstatt zuerst isexecutable aufzurufen.
Vor Julia 1.6 wurde dies nicht korrekt für die Dateisystem-ACLs unter Windows abgefragt, daher gab es für jede Datei true zurück. Ab Julia 1.6 wird korrekt bestimmt, ob die Datei als ausführbar markiert ist oder nicht.
Siehe auch ispath, isreadable, iswritable.
Base.isopen — Functionisopen(object) -> BoolBestimmen Sie, ob ein Objekt - wie ein Stream oder Timer - noch nicht geschlossen ist. Sobald ein Objekt geschlossen ist, wird es niemals ein neues Ereignis erzeugen. Da ein geschlossener Stream jedoch möglicherweise noch Daten in seinem Puffer hat, verwenden Sie eof, um die Möglichkeit zu überprüfen, Daten zu lesen. Verwenden Sie das FileWatching-Paket, um benachrichtigt zu werden, wenn ein Stream möglicherweise beschreibbar oder lesbar ist.
Beispiele
julia> io = open("my_file.txt", "w+");
julia> isopen(io)
true
julia> close(io)
julia> isopen(io)
falseBase.fd — Functionfd(stream)Gibt den Dateideskriptor zurück, der den Stream oder die Datei unterstützt. Beachten Sie, dass diese Funktion nur für synchrone File- und IOStream-Objekte gilt, nicht für die asynchronen Streams.
Base.redirect_stdio — Functionredirect_stdio(;stdin=stdin, stderr=stderr, stdout=stdout)Leitet eine Teilmenge der Streams stdin, stderr, stdout um. Jedes Argument muss ein IOStream, TTY, Pipe, Socket oder devnull sein.
redirect_stdio erfordert Julia 1.7 oder höher.
redirect_stdio(f; stdin=nothing, stderr=nothing, stdout=nothing)Leitet eine Teilmenge der Streams stdin, stderr, stdout um, ruftf()` auf und stellt jeden Stream wieder her.
Mögliche Werte für jeden Stream sind:
nothing, was bedeutet, dass der Stream nicht umgeleitet werden soll.path::AbstractString, der den Stream auf die Datei unterpathumleitet.io, einIOStream,TTY,Pipe, Socket oderdevnull.
Beispiele
julia> redirect_stdio(stdout="stdout.txt", stderr="stderr.txt") do
print("hello stdout")
print(stderr, "hello stderr")
end
julia> read("stdout.txt", String)
"hello stdout"
julia> read("stderr.txt", String)
"hello stderr"Randfälle
Es ist möglich, dass dasselbe Argument an stdout und stderr übergeben wird:
julia> redirect_stdio(stdout="log.txt", stderr="log.txt", stdin=devnull) do
...
endEs wird jedoch nicht unterstützt, zwei unterschiedliche Deskriptoren derselben Datei zu übergeben.
julia> io1 = open("same/path", "w")
julia> io2 = open("same/path", "w")
julia> redirect_stdio(f, stdout=io1, stderr=io2) # nicht unterstütztAußerdem darf das Argument stdin nicht derselbe Deskriptor wie stdout oder stderr sein.
julia> io = open(...)
julia> redirect_stdio(f, stdout=io, stdin=io) # nicht unterstütztredirect_stdio erfordert Julia 1.7 oder höher.
Base.redirect_stdout — Functionredirect_stdout([stream]) -> streamErstellt ein Pipe, an das alle C- und Julia-Ebene stdout Ausgaben umgeleitet werden. Gibt einen Stream zurück, der die Enden des Pipes darstellt. Daten, die in stdout geschrieben werden, können jetzt vom rd Ende des Pipes gelesen werden.
!!! Hinweis stream muss ein kompatibles Objekt sein, wie ein IOStream, TTY, Pipe, Socket oder devnull.
Siehe auch redirect_stdio.
Base.redirect_stdout — Methodredirect_stdout(f::Function, stream)Führen Sie die Funktion f aus, während stdout an stream umgeleitet wird. Nach Abschluss wird stdout auf seine vorherige Einstellung zurückgesetzt.
Base.redirect_stderr — Functionredirect_stderr([stream]) -> streamWie redirect_stdout, aber für stderr.
!!! Hinweis stream muss ein kompatibles Objekt sein, wie ein IOStream, TTY, Pipe, Socket oder devnull.
Siehe auch redirect_stdio.
Base.redirect_stderr — Methodredirect_stderr(f::Function, stream)Führen Sie die Funktion f aus, während Sie stderr an stream umleiten. Nach Abschluss wird stderr auf seine vorherige Einstellung zurückgesetzt.
Base.redirect_stdin — Functionredirect_stdin([stream]) -> streamWie redirect_stdout, aber für stdin. Beachten Sie, dass die Richtung des Streams umgekehrt ist.
!!! Hinweis stream muss ein kompatibles Objekt sein, wie z.B. ein IOStream, TTY, Pipe, Socket oder devnull.
Siehe auch redirect_stdio.
Base.redirect_stdin — Methodredirect_stdin(f::Function, stream)Führen Sie die Funktion f aus, während stdin auf stream umgeleitet wird. Nach Abschluss wird stdin auf seine vorherige Einstellung zurückgesetzt.
Base.readchomp — Functionreadchomp(x)Liest den gesamten Inhalt von x als Zeichenfolge und entfernt eine einzelne abschließende neue Zeile, falls vorhanden. Entspricht chomp(read(x, String)).
Beispiele
julia> write("my_file.txt", "JuliaLang ist eine GitHub-Organisation.\nEs hat viele Mitglieder.\n");
julia> readchomp("my_file.txt")
"JuliaLang ist eine GitHub-Organisation.\nEs hat viele Mitglieder."
julia> rm("my_file.txt");Base.truncate — Functiontruncate(file, n)Ändert die Größe der Datei oder des Puffers, die durch das erste Argument angegeben ist, auf genau n Bytes und füllt zuvor nicht zugewiesenen Speicher mit '\0', wenn die Datei oder der Puffer vergrößert wird.
Beispiele
julia> io = IOBuffer();
julia> write(io, "JuliaLang ist eine GitHub-Organisation.")
35
julia> truncate(io, 15)
IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=15, maxsize=Inf, ptr=16, mark=-1)
julia> String(take!(io))
"JuliaLang ist eine "
julia> io = IOBuffer();
julia> write(io, "JuliaLang ist eine GitHub-Organisation.");
julia> truncate(io, 40);
julia> String(take!(io))
"JuliaLang ist eine GitHub-Organisation.\0\0\0\0\0"Base.skipchars — Functionskipchars(predicate, io::IO; linecomment=nothing)Bewege den Stream io so, dass das nächste gelesene Zeichen das erste verbleibende ist, für das predicate false zurückgibt. Wenn das Schlüsselwort-Argument linecomment angegeben ist, werden alle Zeichen von diesem Zeichen bis zum Beginn der nächsten Zeile ignoriert.
Beispiele
julia> buf = IOBuffer(" text")
IOBuffer(data=UInt8[...], readable=true, writable=false, seekable=true, append=false, size=8, maxsize=Inf, ptr=1, mark=-1)
julia> skipchars(isspace, buf)
IOBuffer(data=UInt8[...], readable=true, writable=false, seekable=true, append=false, size=8, maxsize=Inf, ptr=5, mark=-1)
julia> String(readavailable(buf))
"text"Base.countlines — Functioncountlines(io::IO; eol::AbstractChar = '\n')
countlines(filename::AbstractString; eol::AbstractChar = '\n')Liest io bis zum Ende des Streams/der Datei und zählt die Anzahl der Zeilen. Um eine Datei anzugeben, übergeben Sie den Dateinamen als erstes Argument. EOL-Markierungen, die nicht '\n' sind, werden unterstützt, indem sie als zweites Argument übergeben werden. Die letzte nicht-leere Zeile von io wird gezählt, auch wenn sie nicht mit dem EOL endet, was der Länge entspricht, die von eachline und readlines zurückgegeben wird.
Um die Zeilen eines String zu zählen, kann countlines(IOBuffer(str)) verwendet werden.
Beispiele
julia> io = IOBuffer("JuliaLang ist eine GitHub-Organisation.\n");
julia> countlines(io)
1
julia> io = IOBuffer("JuliaLang ist eine GitHub-Organisation.");
julia> countlines(io)
1
julia> eof(io) # Zeilen zählen bewegt den Dateizeiger
true
julia> io = IOBuffer("JuliaLang ist eine GitHub-Organisation.");
julia> countlines(io, eol = '.')
1julia> write("my_file.txt", "JuliaLang ist eine GitHub-Organisation.\n")
36
julia> countlines("my_file.txt")
1
julia> countlines("my_file.txt", eol = 'n')
4
julia> rm("my_file.txt")
Base.PipeBuffer — FunctionPipeBuffer(data::AbstractVector{UInt8}=UInt8[]; maxsize::Integer = typemax(Int))Ein IOBuffer, der das Lesen ermöglicht und Schreibvorgänge durch Anhängen durchführt. Suchen und Truncieren werden nicht unterstützt. Siehe IOBuffer für die verfügbaren Konstruktoren. Wenn data angegeben ist, wird ein PipeBuffer erstellt, um auf einen Datenvektor zu arbeiten, wobei optional eine Größe angegeben werden kann, über die das zugrunde liegende Array nicht vergrößert werden darf.
Base.readavailable — Functionreadavailable(stream)Lese verfügbare gepufferte Daten aus einem Stream. Tatsächliche I/O wird nur durchgeführt, wenn noch keine Daten gepuffert wurden. Das Ergebnis ist ein Vector{UInt8}.
Die Menge der zurückgegebenen Daten ist implementierungsabhängig; sie kann beispielsweise von der internen Wahl der Puffergröße abhängen. Andere Funktionen wie read sollten im Allgemeinen stattdessen verwendet werden.
Base.IOContext — TypeIOContextIOContext bietet einen Mechanismus zum Übertragen von Ausgabekonfigurationseinstellungen zwischen show Methoden.
Kurz gesagt, es ist ein unveränderliches Wörterbuch, das eine Unterklasse von IO ist. Es unterstützt Standard-Wörterbuchoperationen wie getindex und kann auch als I/O-Stream verwendet werden.
Base.IOContext — MethodIOContext(io::IO, KV::Pair...)Erstellen Sie ein IOContext, das einen gegebenen Stream umschließt und die angegebenen key=>value-Paare zu den Eigenschaften dieses Streams hinzufügt (beachten Sie, dass io selbst ein IOContext sein kann).
- Verwenden Sie
(key => value) in io, um zu sehen, ob diese spezielle Kombination in der Eigenschaftenmenge enthalten ist. - Verwenden Sie
get(io, key, default), um den aktuellsten Wert für einen bestimmten Schlüssel abzurufen.
Die folgenden Eigenschaften sind allgemein in Gebrauch:
:compact: Boolean, der angibt, dass Werte kompakter gedruckt werden sollten, z. B. dass Zahlen mit weniger Ziffern gedruckt werden sollten. Dies wird beim Drucken von Array-Elementen gesetzt. Die:compact-Ausgabe sollte keine Zeilenumbrüche enthalten.:limit: Boolean, der angibt, dass Container abgeschnitten werden sollten, z. B. dass…anstelle der meisten Elemente angezeigt wird.:displaysize: EinTuple{Int,Int}, das die Größe in Zeilen und Spalten angibt, die für die Textausgabe verwendet werden soll. Dies kann verwendet werden, um die Anzeigegröße für aufgerufene Funktionen zu überschreiben, aber um die Größe des Bildschirms zu erhalten, verwenden Sie die Funktiondisplaysize.:typeinfo: einType, der die Informationen charakterisiert, die bereits über den Typ des Objekts, das angezeigt werden soll, gedruckt wurden. Dies ist hauptsächlich nützlich, wenn eine Sammlung von Objekten desselben Typs angezeigt wird, sodass redundante Typinformationen vermieden werden können (z. B. kann[Float16(0)]als "Float16[0.0]" anstelle von "Float16[Float16(0.0)]" angezeigt werden: während die Elemente des Arrays angezeigt werden, wird die:typeinfo-Eigenschaft aufFloat16gesetzt).:color: Boolean, der angibt, ob ANSI-Farben-/Escape-Codes unterstützt/erwartet werden. Standardmäßig wird dies bestimmt, indem geprüft wird, obioein kompatibles Terminal ist und durch ein beliebiges--color-Kommandozeilenflag, alsjuliagestartet wurde.
Beispiele
julia> io = IOBuffer();
julia> printstyled(IOContext(io, :color => true), "string", color=:red)
julia> String(take!(io))
"\e[31mstring\e[39m"
julia> printstyled(io, "string", color=:red)
julia> String(take!(io))
"string"julia> print(IOContext(stdout, :compact => false), 1.12341234)
1.12341234
julia> print(IOContext(stdout, :compact => true), 1.12341234)
1.12341julia> function f(io::IO)
if get(io, :short, false)
print(io, "short")
else
print(io, "loooooong")
end
end
f (generische Funktion mit 1 Methode)
julia> f(stdout)
loooooong
julia> f(IOContext(stdout, :short => true))
shortBase.IOContext — MethodIOContext(io::IO, context::IOContext)Erstellen Sie einen IOContext, der ein alternatives IO umschließt, aber die Eigenschaften von context erbt.
Text I/O
Base.show — Methodshow([io::IO = stdout], x)Schreibt eine Textdarstellung eines Wertes x in den Ausgabestrom io. Neue Typen T sollten show(io::IO, x::T) überladen. Die von show verwendete Darstellung umfasst in der Regel Julia-spezifische Formatierung und Typinformationen und sollte, wenn möglich, als Julia-Code analysierbar sein.
repr gibt die Ausgabe von show als Zeichenfolge zurück.
Für eine ausführlichere, menschenlesbare Textausgabe für Objekte des Typs T definieren Sie zusätzlich show(io::IO, ::MIME"text/plain", ::T). Es wird empfohlen, den :compact IOContext Schlüssel (häufig überprüft als get(io, :compact, false)::Bool) von io in solchen Methoden zu überprüfen, da einige Container ihre Elemente anzeigen, indem sie diese Methode mit :compact => true aufrufen.
Siehe auch print, das un-dekorierte Darstellungen schreibt.
Beispiele
julia> show("Hello World!")
"Hello World!"
julia> print("Hello World!")
Hello World!Base.summary — Functionsummary(io::IO, x)
str = summary(x)Druckt in einen Stream io oder gibt einen String str zurück, der eine kurze Beschreibung eines Wertes liefert. Standardmäßig wird string(typeof(x)) zurückgegeben, z.B. Int64.
Für Arrays wird ein String mit Größen- und Typinformationen zurückgegeben, z.B. 10-element Array{Int64,1}.
Beispiele
julia> summary(1)
"Int64"
julia> summary(zeros(2))
"2-element Vector{Float64}"Base.print — Functionprint([io::IO], xs...)Schreibt in io (oder in den Standardausgabestrom stdout, wenn io nicht angegeben ist) eine kanonische (un-dekorierte) Textdarstellung. Die von print verwendete Darstellung umfasst minimale Formatierung und versucht, Julia-spezifische Details zu vermeiden.
print greift auf show zurück, sodass die meisten Typen einfach show definieren sollten. Definieren Sie print, wenn Ihr Typ eine separate "einfache" Darstellung hat. Zum Beispiel zeigt show Zeichenfolgen mit Anführungszeichen an, und print zeigt Zeichenfolgen ohne Anführungszeichen an.
Siehe auch println, string, printstyled.
Beispiele
julia> print("Hello World!")
Hello World!
julia> io = IOBuffer();
julia> print(io, "Hello", ' ', :World!)
julia> String(take!(io))
"Hello World!"Base.println — Functionprintln([io::IO], xs...)Druckt (unter Verwendung von print) xs auf io, gefolgt von einem Zeilenumbruch. Wenn io nicht angegeben ist, wird auf den Standardausgabestrom stdout gedruckt.
Siehe auch printstyled, um Farben usw. hinzuzufügen.
Beispiele
julia> println("Hello, world")
Hello, world
julia> io = IOBuffer();
julia> println(io, "Hello", ',', " world.")
julia> String(take!(io))
"Hello, world.\n"Base.printstyled — Functionprintstyled([io], xs...; bold::Bool=false, italic::Bool=false, underline::Bool=false, blink::Bool=false, reverse::Bool=false, hidden::Bool=false, color::Union{Symbol,Int}=:normal)Druckt xs in einer Farbe, die als Symbol oder Ganzzahl angegeben ist, optional fett.
Das Schlüsselwort color kann einen der Werte :normal, :italic, :default, :bold, :black, :blink, :blue, :cyan, :green, :hidden, :light_black, :light_blue, :light_cyan, :light_green, :light_magenta, :light_red, :light_white, :light_yellow, :magenta, :nothing, :red, :reverse, :underline, :white oder :yellow oder eine Ganzzahl zwischen 0 und 255 annehmen. Beachten Sie, dass nicht alle Terminals 256 Farben unterstützen.
Die Schlüsselwörter bold=true, italic=true, underline=true, blink=true sind selbsterklärend. Das Schlüsselwort reverse=true druckt mit vertauschten Vorder- und Hintergrundfarben, und hidden=true sollte im Terminal unsichtbar sein, kann aber dennoch kopiert werden. Diese Eigenschaften können in beliebiger Kombination verwendet werden.
Siehe auch print, println, show.
!!! Hinweis Nicht alle Terminals unterstützen kursiven Text. Einige Terminals interpretieren kursiv als umgekehrt oder blinkend.
!!! Kompatibilität "Julia 1.7" Schlüsselwörter außer color und bold wurden in Julia 1.7 hinzugefügt.
!!! Kompatibilität "Julia 1.10" Unterstützung für kursiven Text wurde in Julia 1.10 hinzugefügt.
Base.sprint — Functionsprint(f::Function, args...; context=nothing, sizehint=0)Rufen Sie die angegebene Funktion mit einem I/O-Stream und den bereitgestellten zusätzlichen Argumenten auf. Alles, was in diesen I/O-Stream geschrieben wird, wird als String zurückgegeben. context kann ein IOContext sein, dessen Eigenschaften verwendet werden, ein Pair, das eine Eigenschaft und ihren Wert angibt, oder ein Tupel von Pair, das mehrere Eigenschaften und deren Werte angibt. sizehint schlägt die Kapazität des Puffers (in Bytes) vor.
Das optionale Schlüsselwort-Argument context kann auf ein :key=>value-Paar, ein Tupel von :key=>value-Paaren oder ein IO- oder IOContext-Objekt gesetzt werden, dessen Attribute für den an f übergebenen I/O-Stream verwendet werden. Der optionale sizehint ist eine empfohlene Größe (in Bytes), die für den Puffer, der zum Schreiben des Strings verwendet wird, zugewiesen werden soll.
Das Übergeben eines Tupels an das Schlüsselwort context erfordert Julia 1.7 oder höher.
Beispiele
julia> sprint(show, 66.66666; context=:compact => true)
"66.6667"
julia> sprint(showerror, BoundsError([1], 100))
"BoundsError: attempt to access 1-element Vector{Int64} at index [100]"Base.showerror — Functionshowerror(io, e)Zeigt eine beschreibende Darstellung eines Ausnahmeobjekts e. Diese Methode wird verwendet, um die Ausnahme nach einem Aufruf von throw anzuzeigen.
Beispiele
julia> struct MyException <: Exception
msg::String
end
julia> function Base.showerror(io::IO, err::MyException)
print(io, "MyException: ")
print(io, err.msg)
end
julia> err = MyException("test exception")
MyException("test exception")
julia> sprint(showerror, err)
"MyException: test exception"
julia> throw(MyException("test exception"))
ERROR: MyException: test exceptionBase.dump — Functiondump(x; maxdepth=8)Zeigt jeden Teil der Darstellung eines Wertes an. Die Tiefe der Ausgabe wird auf maxdepth gekürzt.
Beispiele
julia> struct MyStruct
x
y
end
julia> x = MyStruct(1, (2,3));
julia> dump(x)
MyStruct
x: Int64 1
y: Tuple{Int64, Int64}
1: Int64 2
2: Int64 3
julia> dump(x; maxdepth = 1)
MyStruct
x: Int64 1
y: Tuple{Int64, Int64}Base.Meta.@dump — Macro@dump exprZeige jeden Teil der Darstellung des gegebenen Ausdrucks. Entspricht dump(:(expr)).
Base.readline — Functionreadline(io::IO=stdin; keep::Bool=false)
readline(filename::AbstractString; keep::Bool=false)Liest eine einzelne Zeile Text aus dem angegebenen I/O-Stream oder der Datei (standardmäßig stdin). Beim Lesen aus einer Datei wird angenommen, dass der Text in UTF-8 kodiert ist. Zeilen im Eingabestrom enden mit '\n' oder "\r\n" oder dem Ende eines Eingabestroms. Wenn keep false ist (wie standardmäßig), werden diese nachfolgenden Zeilenumbrüche von der Zeile entfernt, bevor sie zurückgegeben wird. Wenn keep true ist, werden sie als Teil der Zeile zurückgegeben.
Gibt einen String zurück. Siehe auch copyline, um stattdessen in-place in einen anderen Stream zu schreiben (der ein vorab zugewiesenes IOBuffer sein kann).
Siehe auch readuntil zum Lesen bis zu allgemeineren Trennzeichen.
Beispiele
julia> write("my_file.txt", "JuliaLang ist eine GitHub-Organisation.\nEs hat viele Mitglieder.\n");
julia> readline("my_file.txt")
"JuliaLang ist eine GitHub-Organisation."
julia> readline("my_file.txt", keep=true)
"JuliaLang ist eine GitHub-Organisation.\n"
julia> rm("my_file.txt")julia> print("Geben Sie Ihren Namen ein: ")
Geben Sie Ihren Namen ein:
julia> your_name = readline()
Logan
"Logan"Base.readuntil — Functionreaduntil(stream::IO, delim; keep::Bool = false)
readuntil(filename::AbstractString, delim; keep::Bool = false)Lese einen String aus einem I/O stream oder einer Datei bis zum angegebenen Trennzeichen. Das Trennzeichen kann ein UInt8, AbstractChar, String oder Vektor sein. Das Schlüsselwort-Argument keep steuert, ob das Trennzeichen im Ergebnis enthalten ist. Der Text wird als in UTF-8 kodiert angenommen.
Gibt einen String zurück, wenn delim ein AbstractChar oder ein String ist, andernfalls wird ein Vector{typeof(delim)} zurückgegeben. Siehe auch copyuntil, um stattdessen in-place in einen anderen Stream zu schreiben (der ein vorab zugewiesenes IOBuffer sein kann).
Beispiele
julia> write("my_file.txt", "JuliaLang ist eine GitHub-Organisation.\nEs hat viele Mitglieder.\n");
julia> readuntil("my_file.txt", 'L')
"Julia"
julia> readuntil("my_file.txt", '.', keep = true)
"JuliaLang ist eine GitHub-Organisation."
julia> rm("my_file.txt")Base.readlines — Functionreadlines(io::IO=stdin; keep::Bool=false)
readlines(filename::AbstractString; keep::Bool=false)Liest alle Zeilen eines I/O-Streams oder einer Datei als Vektor von Strings. Das Verhalten entspricht dem Speichern des Ergebnisses des wiederholten Lesens von readline mit denselben Argumenten und dem Speichern der resultierenden Zeilen als Vektor von Strings. Siehe auch eachline, um über die Zeilen zu iterieren, ohne sie alle auf einmal zu lesen.
Beispiele
julia> write("my_file.txt", "JuliaLang ist eine GitHub-Organisation.\nEs hat viele Mitglieder.\n");
julia> readlines("my_file.txt")
2-element Vector{String}:
"JuliaLang ist eine GitHub-Organisation."
"Es hat viele Mitglieder."
julia> readlines("my_file.txt", keep=true)
2-element Vector{String}:
"JuliaLang ist eine GitHub-Organisation.\n"
"Es hat viele Mitglieder.\n"
julia> rm("my_file.txt")Base.eachline — Functioneachline(io::IO=stdin; keep::Bool=false)
eachline(filename::AbstractString; keep::Bool=false)Erstellen Sie ein iterierbares EachLine-Objekt, das jede Zeile aus einem I/O-Stream oder einer Datei liefert. Die Iteration ruft wiederholt readline mit dem Stream-Argument auf, wobei keep übergeben wird, um zu bestimmen, ob nachfolgende Zeilenendezeichen beibehalten werden. Wenn mit einem Dateinamen aufgerufen, wird die Datei zu Beginn der Iteration einmal geöffnet und am Ende geschlossen. Wenn die Iteration unterbrochen wird, wird die Datei geschlossen, wenn das EachLine-Objekt garbage collected wird.
Um über jede Zeile eines String zu iterieren, kann eachline(IOBuffer(str)) verwendet werden.
Iterators.reverse kann auf ein EachLine-Objekt angewendet werden, um die Zeilen in umgekehrter Reihenfolge zu lesen (für Dateien, Puffer und andere I/O-Streams, die seek unterstützen), und first oder last können verwendet werden, um die ersten oder letzten Zeilen zu extrahieren.
Beispiele
julia> write("my_file.txt", "JuliaLang ist eine GitHub-Organisation.\n Es hat viele Mitglieder.\n");
julia> for line in eachline("my_file.txt")
print(line)
end
JuliaLang ist eine GitHub-Organisation. Es hat viele Mitglieder.
julia> rm("my_file.txt");Julia 1.8 ist erforderlich, um Iterators.reverse oder last mit eachline-Iteratoren zu verwenden.
Base.copyline — Functioncopyline(out::IO, io::IO=stdin; keep::Bool=false)
copyline(out::IO, filename::AbstractString; keep::Bool=false)
Kopiert eine einzelne Zeile Text von einem I/O `stream` oder einer Datei in den `out`-Stream und gibt `out` zurück.
Beim Lesen aus einer Datei wird angenommen, dass der Text in UTF-8 kodiert ist. Zeilen im Eingangsbereich enden mit `'\n'` oder `"\r\n"` oder dem Ende eines Eingabestreams. Wenn `keep` false ist (wie es standardmäßig der Fall ist), werden diese nachfolgenden Zeilenumbrüche von der Zeile entfernt, bevor sie zurückgegeben wird. Wenn `keep` true ist, werden sie als Teil der Zeile zurückgegeben.
Ähnlich wie [`readline`](@ref), das einen `String` zurückgibt; im Gegensatz dazu schreibt `copyline` direkt in `out`, ohne einen String zuzuweisen. (Dies kann beispielsweise verwendet werden, um Daten in einen vorab zugewiesenen [`IOBuffer`](@ref) zu lesen.)
Siehe auch [`copyuntil`](@ref) zum Lesen bis zu allgemeineren Trennzeichen.
# Beispiele
jldoctest julia> write("my_file.txt", "JuliaLang ist eine GitHub-Organisation.\nEs hat viele Mitglieder.\n");
julia> String(take!(copyline(IOBuffer(), "my_file.txt"))) "JuliaLang ist eine GitHub-Organisation."
julia> String(take!(copyline(IOBuffer(), "my_file.txt", keep=true))) "JuliaLang ist eine GitHub-Organisation.\n"
julia> rm("my_file.txt") ```
Base.copyuntil — Functioncopyuntil(out::IO, stream::IO, delim; keep::Bool = false)
copyuntil(out::IO, filename::AbstractString, delim; keep::Bool = false)
Kopiert einen String aus einem I/O `stream` oder einer Datei bis zum angegebenen Trennzeichen in den `out`-Stream und gibt `out` zurück. Das Trennzeichen kann ein `UInt8`, `AbstractChar`, String oder Vektor sein. Das Schlüsselwort-Argument `keep` steuert, ob das Trennzeichen im Ergebnis enthalten ist. Der Text wird als in UTF-8 kodiert angenommen.
Ähnlich wie [`readuntil`](@ref), das einen `String` zurückgibt; im Gegensatz dazu schreibt `copyuntil` direkt in `out`, ohne einen String zuzuweisen. (Dies kann beispielsweise verwendet werden, um Daten in einen vorab zugewiesenen [`IOBuffer`](@ref) zu lesen.)
# Beispiele
jldoctest julia> write("my_file.txt", "JuliaLang ist eine GitHub-Organisation.\nEs hat viele Mitglieder.\n");
julia> String(take!(copyuntil(IOBuffer(), "my_file.txt", 'L'))) "Julia"
julia> String(take!(copyuntil(IOBuffer(), "my_file.txt", '.', keep = true))) "JuliaLang ist eine GitHub-Organisation."
julia> rm("my_file.txt") ```
Base.displaysize — Functiondisplaysize([io::IO]) -> (lines, columns)Gibt die nominale Größe des Bildschirms zurück, die für die Ausgabe an dieses IO-Objekt verwendet werden kann. Wenn keine Eingabe bereitgestellt wird, werden die Umgebungsvariablen LINES und COLUMNS gelesen. Wenn diese nicht gesetzt sind, wird eine Standardgröße von (24, 80) zurückgegeben.
Beispiele
julia> withenv("LINES" => 30, "COLUMNS" => 100) do
displaysize()
end
(30, 100)Um die Größe Ihres TTY zu erhalten,
julia> displaysize(stdout)
(34, 147)Multimedia I/O
Just as text output is performed by print und benutzerdefinierte Typen ihre textuelle Darstellung durch Überladen von show anzeigen können, bietet Julia einen standardisierten Mechanismus für reichhaltige Multimedia-Ausgaben (wie Bilder, formatierter Text oder sogar Audio und Video), der aus drei Teilen besteht:
- Eine Funktion
display(x), um die reichhaltigste verfügbare Multimedia-Darstellung eines Julia-Objektsx(mit einem Fallback in Klartext) anzufordern. - Die Überladung von
showermöglicht es, beliebige Multimedia-Darstellungen (gekennzeichnet durch standardisierte MIME-Typen) von benutzerdefinierten Typen anzugeben. - Multimedia-fähige Anzeige-Backends können registriert werden, indem man einen generischen
AbstractDisplay-Typ unterklassen und sie überpushdisplayauf einen Stapel von Anzeige-Backends schiebt.
Die grundlegende Julia-Laufzeit bietet nur die Anzeige von reinem Text, aber reichhaltigere Anzeigen können aktiviert werden, indem externe Module geladen oder grafische Julia-Umgebungen (wie das auf IPython basierende IJulia-Notebook) verwendet werden.
Base.Multimedia.AbstractDisplay — TypeAbstractDisplayAbstrakte Superklasse für reichhaltige Anzeigeausgabegeräte. TextDisplay ist eine Unterklasse davon.
Base.Multimedia.display — Functiondisplay(x)
display(d::AbstractDisplay, x)
display(mime, x)
display(d::AbstractDisplay, mime, x)Zeige x mit der obersten anwendbaren Anzeige im Anzeige-Stack an, typischerweise unter Verwendung der reichhaltigsten unterstützten Multimedia-Ausgabe für x, wobei die einfache Textausgabe stdout als Fallback dient. Die Variante display(d, x) versucht, x nur auf der angegebenen Anzeige d anzuzeigen und wirft einen MethodError, wenn d Objekte dieses Typs nicht anzeigen kann.
Im Allgemeinen kann man nicht davon ausgehen, dass die Ausgabe von display an stdout geht (im Gegensatz zu print(x) oder show(x)). Zum Beispiel kann display(x) ein separates Fenster mit einem Bild öffnen. display(x) bedeutet "zeige x auf die beste Weise, die du für das aktuelle Ausgabegerät(e) kannst." Wenn du eine REPL-ähnliche Textausgabe möchtest, die garantiert an stdout geht, verwende stattdessen show(stdout, "text/plain", x).
Es gibt auch zwei Varianten mit einem mime-Argument (einem MIME-Typ-String, wie "image/png"), die versuchen, x nur mit dem angeforderten MIME-Typ anzuzeigen, und einen MethodError werfen, wenn dieser Typ von den Anzeigen oder von x nicht unterstützt wird. Mit diesen Varianten kann man auch die "rohen" Daten im angeforderten MIME-Typ bereitstellen, indem man x::AbstractString (für MIME-Typen mit textbasierter Speicherung, wie text/html oder application/postscript) oder x::Vector{UInt8} (für binäre MIME-Typen) übergibt.
Um anzupassen, wie Instanzen eines Typs angezeigt werden, überlade show anstelle von display, wie im Handbuchabschnitt über benutzerdefiniertes hübsches Drucken erklärt.
Base.Multimedia.redisplay — Functionredisplay(x)
redisplay(d::AbstractDisplay, x)
redisplay(mime, x)
redisplay(d::AbstractDisplay, mime, x)Standardmäßig rufen die redisplay-Funktionen einfach display auf. Einige Anzeige-Backends können jedoch redisplay überschreiben, um eine vorhandene Anzeige von x (falls vorhanden) zu ändern. Die Verwendung von redisplay ist auch ein Hinweis an das Backend, dass x möglicherweise mehrere Male neu angezeigt werden kann, und das Backend kann entscheiden, die Anzeige bis (zum Beispiel) zur nächsten interaktiven Eingabeaufforderung zu verschieben.
Base.Multimedia.displayable — Functiondisplayable(mime) -> Bool
displayable(d::AbstractDisplay, mime) -> BoolGibt einen booleschen Wert zurück, der angibt, ob der angegebene mime-Typ (String) von einem der Displays im aktuellen Display-Stack oder speziell vom Display d in der zweiten Variante angezeigt werden kann.
Base.show — Methodshow(io::IO, mime, x)Die display Funktionen rufen letztendlich show auf, um ein Objekt x als einen gegebenen mime Typ in einen gegebenen I/O Stream io (normalerweise ein Speicherpuffer) zu schreiben, wenn möglich. Um eine reichhaltige Multimedia-Darstellung eines benutzerdefinierten Typs T bereitzustellen, ist es nur notwendig, eine neue show Methode für T zu definieren, über: show(io, ::MIME"mime", x::T) = ..., wobei mime eine MIME-Typ-String ist und der Funktionskörper write (oder ähnliches) aufruft, um diese Darstellung von x in io zu schreiben. (Beachten Sie, dass die MIME"" Notation nur literale Strings unterstützt; um MIME Typen flexibler zu konstruieren, verwenden Sie MIME{Symbol("")}.)
Zum Beispiel, wenn Sie einen MyImage Typ definieren und wissen, wie man ihn in eine PNG-Datei schreibt, könnten Sie eine Funktion show(io, ::MIME"image/png", x::MyImage) = ... definieren, um Ihre Bilder auf jedem PNG-fähigen AbstractDisplay (wie IJulia) anzuzeigen. Wie gewohnt, stellen Sie sicher, dass Sie import Base.show verwenden, um neue Methoden zur eingebauten Julia-Funktion show hinzuzufügen.
Technisch gesehen definiert das MIME"mime" Makro einen Singleton-Typ für den gegebenen mime String, was es uns ermöglicht, Julias Dispatch-Mechanismen auszunutzen, um zu bestimmen, wie Objekte eines bestimmten Typs angezeigt werden.
Der Standard-MIME-Typ ist MIME"text/plain". Es gibt eine Fallback-Definition für text/plain Ausgabe, die show mit 2 Argumenten aufruft, sodass es nicht immer notwendig ist, eine Methode für diesen Fall hinzuzufügen. Wenn ein Typ jedoch von einer benutzerdefinierten menschenlesbaren Ausgabe profitiert, sollte show(::IO, ::MIME"text/plain", ::T) definiert werden. Zum Beispiel verwendet der Day Typ 1 day als Ausgabe für den text/plain MIME-Typ und Day(1) als Ausgabe von show mit 2 Argumenten.
Beispiele
julia> struct Day
n::Int
end
julia> Base.show(io::IO, ::MIME"text/plain", d::Day) = print(io, d.n, " day")
julia> Day(1)
1 dayContainertypen implementieren im Allgemeinen show mit 3 Argumenten, indem sie show(io, MIME"text/plain"(), x) für Elemente x aufrufen, wobei :compact => true in einem IOContext gesetzt ist, das als erstes Argument übergeben wird.
Base.Multimedia.showable — Functionshowable(mime, x)Gibt einen booleschen Wert zurück, der angibt, ob das Objekt x als der angegebene mime-Typ geschrieben werden kann.
(Im Allgemeinen wird dies automatisch durch die Existenz der entsprechenden show-Methode für typeof(x) bestimmt. Einige Typen bieten benutzerdefinierte showable-Methoden an; zum Beispiel, wenn die verfügbaren MIME-Formate von dem Wert von x abhängen.)
Beispiele
julia> showable(MIME("text/plain"), rand(5))
true
julia> showable("image/png", rand(5))
falseBase.repr — Methodrepr(mime, x; context=nothing)Gibt eine AbstractString oder Vector{UInt8} zurück, die die Darstellung von x im angeforderten mime-Typ enthält, wie von show(io, mime, x) geschrieben (wirft einen MethodError, wenn keine geeignete show verfügbar ist). Eine AbstractString wird für MIME-Typen mit textuellen Darstellungen (wie "text/html" oder "application/postscript") zurückgegeben, während binäre Daten als Vector{UInt8} zurückgegeben werden. (Die Funktion istextmime(mime) gibt zurück, ob Julia einen bestimmten mime-Typ als Text behandelt.)
Das optionale Schlüsselwort-Argument context kann auf ein :key=>value-Paar oder ein IO- oder IOContext-Objekt gesetzt werden, dessen Attribute für den I/O-Stream verwendet werden, der an show übergeben wird.
In einem speziellen Fall, wenn x eine AbstractString (für textuelle MIME-Typen) oder ein Vector{UInt8} (für binäre MIME-Typen) ist, geht die repr-Funktion davon aus, dass x bereits im angeforderten mime-Format vorliegt und gibt einfach x zurück. Dieser Sonderfall gilt nicht für den MIME-Typ "text/plain". Dies ist nützlich, damit Rohdaten an display(m::MIME, x) übergeben werden können.
Insbesondere ist repr("text/plain", x) typischerweise eine "schön formatierte" Version von x, die für den menschlichen Konsum gedacht ist. Siehe auch repr(x), um stattdessen eine Zeichenfolge zurückzugeben, die show(x) entspricht und näher daran sein könnte, wie der Wert von x in Julia eingegeben werden würde.
Beispiele
julia> A = [1 2; 3 4];
julia> repr("text/plain", A)
"2×2 Matrix{Int64}:\n 1 2\n 3 4"Base.Multimedia.MIME — TypeMIMEEin Typ, der ein standardisiertes Internetdatenformat darstellt. "MIME" steht für "Multipurpose Internet Mail Extensions", da der Standard ursprünglich verwendet wurde, um Multimedia-Anhänge an E-Mail-Nachrichten zu beschreiben.
Ein MIME-Objekt kann als zweites Argument an show übergeben werden, um die Ausgabe in diesem Format anzufordern.
Beispiele
julia> show(stdout, MIME("text/plain"), "hi")
"hi"Base.Multimedia.@MIME_str — Macro@MIME_strEin Komfort-Makro zum Schreiben von MIME Typen, das typischerweise verwendet wird, wenn Methoden zu show hinzugefügt werden. Zum Beispiel könnte die Syntax show(io::IO, ::MIME"text/html", x::MyType) = ... verwendet werden, um zu definieren, wie eine HTML-Darstellung von MyType geschrieben wird.
Wie oben erwähnt, kann man auch neue Anzeige-Backends definieren. Zum Beispiel kann ein Modul, das PNG-Bilder in einem Fenster anzeigen kann, diese Fähigkeit bei Julia registrieren, sodass der Aufruf display(x) für Typen mit PNG-Darstellungen das Bild automatisch im Fenster des Moduls anzeigt.
Um einen neuen Anzeige-Backend zu definieren, sollte man zunächst einen Untertyp D der abstrakten Klasse AbstractDisplay erstellen. Dann sollte man für jeden MIME-Typ (mime-String), der auf D angezeigt werden kann, eine Funktion display(d::D, ::MIME"mime", x) = ... definieren, die x als diesen MIME-Typ anzeigt, normalerweise durch Aufruf von show(io, mime, x) oder repr(io, mime, x). Eine MethodError sollte ausgelöst werden, wenn x nicht als dieser MIME-Typ angezeigt werden kann; dies geschieht automatisch, wenn man show oder repr aufruft. Schließlich sollte man eine Funktion display(d::D, x) definieren, die showable(mime, x) nach den von D unterstützten mime-Typen abfragt und den "besten" anzeigt; ein MethodError sollte ausgelöst werden, wenn keine unterstützten MIME-Typen für x gefunden werden. Ebenso möchten einige Untertypen möglicherweise redisplay(d::D, ...) überschreiben. (Wiederum sollte man import Base.display verwenden, um neue Methoden zu display hinzuzufügen.) Die Rückgabewerte dieser Funktionen liegen in der Verantwortung der Implementierung (da es in einigen Fällen nützlich sein kann, einen Anzeige-"Handle" eines Typs zurückzugeben). Die Anzeige-Funktionen für D können dann direkt aufgerufen werden, aber sie können auch automatisch von display(x) aufgerufen werden, indem einfach ein neues Display auf den Anzeige-Backend-Stack geschoben wird mit:
Base.Multimedia.pushdisplay — Functionpushdisplay(d::AbstractDisplay)Schiebt ein neues Display d oben auf den globalen Display-Backend-Stack. Der Aufruf von display(x) oder display(mime, x) zeigt x auf dem obersten kompatiblen Backend im Stack an (d.h. dem obersten Backend, das keinen MethodError auslöst).
Base.Multimedia.popdisplay — Functionpopdisplay()
popdisplay(d::AbstractDisplay)Entfernt das oberste Backend vom Display-Backend-Stack oder die oberste Kopie von d in der zweiten Variante.
Base.Multimedia.TextDisplay — TypeTextDisplay(io::IO)Gibt ein TextDisplay <: AbstractDisplay zurück, das jedes Objekt als MIME-Typ text/plain (standardmäßig) anzeigt und die Textdarstellung in den angegebenen I/O-Stream schreibt. (So werden Objekte in der Julia REPL ausgegeben.)
Base.Multimedia.istextmime — Functionistextmime(m::MIME)Bestimmen Sie, ob ein MIME-Typ Textdaten ist. MIME-Typen werden als Binärdaten angesehen, mit Ausnahme einer Reihe von Typen, die als Textdaten bekannt sind (möglicherweise Unicode).
Beispiele
julia> istextmime(MIME("text/plain"))
true
julia> istextmime(MIME("image/png"))
falseNetwork I/O
Base.bytesavailable — Functionbytesavailable(io)Gibt die Anzahl der Bytes zurück, die zum Lesen verfügbar sind, bevor ein Lesevorgang aus diesem Stream oder Puffer blockiert.
Beispiele
julia> io = IOBuffer("JuliaLang ist eine GitHub-Organisation");
julia> bytesavailable(io)
34Base.ntoh — Functionntoh(x)Konvertiert die Endianness eines Wertes von Netzwerk-Byte-Reihenfolge (Big-Endian) zu der vom Host verwendeten.
Base.hton — Functionhton(x)Konvertiert die Endianness eines Wertes von der vom Host verwendeten in die Netzwerk-Byte-Reihenfolge (Big-Endian).
Base.ltoh — Functionltoh(x)Konvertiert die Endianness eines Wertes von Little-endian in die vom Host verwendete.
Base.htol — Functionhtol(x)Konvertiert die Endianness eines Wertes von der vom Host verwendeten in Little-endian.
Base.ENDIAN_BOM — ConstantENDIAN_BOMDas 32-Bit-Byte-Order-Mark zeigt die native Byte-Reihenfolge der Host-Maschine an. Little-Endian-Maschinen enthalten den Wert 0x04030201. Big-Endian-Maschinen enthalten den Wert 0x01020304.