
Ich kann mit dem Linux-Terminalbefehl auf Jupiter wie folgt eine Liste mit Dateinamen in einer Liste mit dem Namen „a“ erstellen:
a=!find . -type f \! -name '*.*' -print
Um Dateinamen ohne Erweiterungen zu erhalten, funktioniert der entsprechende Befehl im Linux-Terminal;
find . -type f -exec sh -c '
for pathname do
pathname=$( basename "$pathname" )
printf "%s\n" "${pathname%.*}"
done' sh {} +
Aber wie kann ich diesen Befehl auf Jupyter ausführen und ihm wie oben den Namen „a“ zuweisen? Der folgende Code hat nicht funktioniert.
a=!find . -type f -exec sh -c '
for pathname do
pathname=$( basename "$pathname" )
printf "%s\n" "${pathname%.*}"
done' sh {} +
Ich habe auch versucht, die Einrückung der Zeilen zu ändern, aber ich bekomme einen Syntaxfehler oder gar nichts. Nach meiner Suche in der Befehlszeile der For-Schleife auf Jupiter sollte das „!“ vielleicht an einer anderen Stelle stehen. Wie kann ich das zum Laufen bringen?
Antwort1
Ich habe dieses Problem auf eine andere Weise gelöst, falls jemand ein ähnliches Problem hat. Ich habe die Befehlszeile verwendet
a=!find . -type f \! -name '*.*' -print
Dadurch wurde eine Liste von Dateinamen mit Erweiterungen erstellt. Ich habe die Erweiterungen aus jedem Element entfernt.
files = [os.path.splitext(fname)[0] for fname in a]