Überprüfen, ob eine Datei vorhanden ist mit Lua
Wie kann ich überprüfen, ob eine Datei vorhanden ist mit Lua?
- sicherlich ein Duplikat?
- wie in stackoverflow.com/questions/1340230/... ?
- Ich denke, mehr als in lua.org/pil/21.2.html
- das ist auch in der Nähe eine wirkliche Antwort. Ich habe nur ein quick-check nur auf so
- Hi, Thx für die schnellen Antworten. Ich bin dabei: assert(io.input(fileName), "Fehler beim öffnen der Datei"), Aber wenn ich eine dummy mit dem Namen, die ich nicht bekomme die Fehlermeldung : "Fehler beim öffnen der Datei". Die Botschaft, die ich bekommen ist: "bad argument #1 to 'input' (/pfrm2.0/share/lua/5.1/db/fake.dbdl: No such file or directory)" alle Gedanken ?
- Yoni, ich verstehe, Sie trat SO. Willkommen. Paar Dinge zu erwähnen. 1) keine Antwort auf Ihre eigene Frage mit einer neuen Frage. 2) Versuchen Sie zu suchen, um (Google ist dein Freund) für mehr info und nur, wenn Sie komplett stecken, frag mal hier. Das glaube ich wird Sie einen besseren Entwickler.
- Der Grund, warum Sie bekommen "bad argument#1 to 'input'" ist, dass die Eingabe in Lua nur ein argument, und Sie sind durch 2. Und Sie sollten behaupten io.öffnen Sie nicht die Eingabe.
- Hi Liutauras, werde ich mehr Notiz für das nächste mal, tut mir Leid.
- Außerdem habe ich ändern um io.öffnen und es funktioniert jetzt. Danke
- Kein problem, Yoni. Vielen Dank für Sortieren Ihrer Frage. Es sieht einfach schöner aus jetzt. Nicht der Grund, warum wir lieben es SO. Weil es nett ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
aber beachten Sie, dass dieser code nur überprüft, ob die Datei kann zum Lesen geöffnet werden.
Verwendung einfacher Lua, das beste, was Sie tun können, ist zu sehen, wenn eine Datei geöffnet werden kann zum Lesen, als pro LHF. Dies ist fast immer gut genug. Aber wenn Sie mehr wollen, laden Sie die Lua-POSIX-Bibliothek und überprüfen Sie, ob
posix.stat(
Pfad)
gibt nichtnil
.lfs.attributes(path,'mode')
Ich zitiere mich selbst aus hier
Diese benutze ich (aber ich habe tatsächlich überprüfen Sie für den Fehler):
os.umbenennen(name1, name2) benennt name1 in name2. Verwenden Sie den gleichen Namen und nichts ändern sollte (außer es ist eine badass-Fehler). Wenn alles gut ist gibt es true zurück, andernfalls wird nil zurückgegeben und die Fehlermeldung. Wenn Sie nicht wollen, zu verwenden lfs Sie nicht unterscheiden, zwischen Dateien und Verzeichnissen, ohne zu versuchen, die Datei zu öffnen (die ist etwas langsam, aber ok).
Also ohne LuaFileSystem
Sieht es kürzer, aber dauert länger...
Auch das öffnen einer Datei ist es riskant
Haben Spaß beim Programmieren!
Benutze ich:
Bin ich mit LUA 5.3.4.
Der Vollständigkeit halber: Sie können auch versuchen Sie Ihr Glück mit
path.exists(filename)
. Ich bin mir nicht sicher, welche Lua-Distributionen tatsächlich haben diesepath
namespace (update: Farblichtstift), aber zumindest ist es enthalten in der Fackel:debug.getinfo(path.exists)
sagt mir, dass seine Quelle ist intorch/install/share/lua/5.1/pl/path.lua
und es ist wie folgt implementiert:Wenn Sie bereit sind, verwenden Sie
lfs
verwenden, können Sielfs.attributes
. Wird es wiedernil
im Falle eines Fehlers:Obwohl es zurückgeben kann
nil
für andere Fehler als eine nicht-vorhandene Datei, wenn es nicht zurücknil
, die Datei gibt es sicherlich.Einer Antwort, die windows prüft nur die Dateien und Ordner, und erfordert auch keine zusätzlichen Pakete. Es gibt
true
oderfalse
.Können Sie auch mit den 'Pfaden' - Paket. Hier's den link zum Paket,
Dann in Lua zu tun:
Nicht unbedingt der idealste, da ich nicht weiß Ihrem spezifischen Zweck, für diese, oder wenn Sie eine gewünschte Umsetzung im Auge, aber Sie können einfach öffnen Sie die Datei, um zu prüfen, die für seine Existenz.
io.open
zurücknil
wenn es nicht gelingt, die Datei zu öffnen. Als Seite beachten, dies ist der Grund, warum es wird Häufig verwendet, mitassert
zu produzieren eine hilfreiche Fehlermeldung, falls es nicht in der Lage ist zu öffnen Sie die angegebene Datei. Zum Beispiel:Wenn die Datei
hello.txt
nicht vorhanden, sollten Sie erhalten eine Fehlermeldung ähnlichstdin:1: hello.txt: No such file or directory
.Lua 5.1:
Library-Lösung verwenden, können Sie entweder
paths
oderpath
.Aus der offizielle Dokument von
paths
:Obwohl die Namen sind ein bisschen komisch, natürlich können Sie
paths.filep()
zu prüfen, ob ein Pfad vorhanden ist, und es ist eine Datei. Verwendenpaths.dirp()
um zu überprüfen, ob es existiert und ist ein Verzeichnis. Sehr bequem.Wenn Sie es vorziehen
path
eher alspaths
verwenden, können Siepath.exists()
mitassert()
zu überprüfen, die Existenz eines Pfades, immer seinen Wert bei der gleichen Zeit. Nützlich, wenn Sie den Aufbau Pfad von Stücken.Wenn Sie nur wollen, um zu überprüfen das boolsche Ergebnis, verwenden Sie
path.isdir()
undpath.isfile()
. Ihre Zwecke sind gut verstanden, aus Ihrem Namen.Wie über etwas wie das zu tun?
Sieht gut aus für die Prüfung Ihren Weg. 🙂