以下のように、JupiterのLinuxターミナルコマンドを使用して、「a」というリストのファイル名のリストを取得できます。
a=!find . -type f \! -name '*.*' -print
拡張子なしでファイル名を作成するには、Linux端末で適切なコマンドを実行します。
find . -type f -exec sh -c '
for pathname do
pathname=$( basename "$pathname" )
printf "%s\n" "${pathname%.*}"
done' sh {} +
しかし、上記の「a」という名前に割り当てて、Jupyterでこのコマンドをどのように実行しますか?以下のコードは機能しません。
a=!find . -type f -exec sh -c '
for pathname do
pathname=$( basename "$pathname" )
printf "%s\n" "${pathname%.*}"
done' sh {} +
また、行のインデントを変更してみましたが、構文エラーが発生したり何も起こりません。 Jupiterのforループコマンドラインで検索した結果、「!」は別の場所にある必要があります。どのように動作させることができますか?
答え1
誰かが同様の問題を抱えている場合は、別の方法でこの問題を解決します。私はコマンドラインを使用しました
a=!find . -type f \! -name '*.*' -print
拡張子を持つファイル名のリストが生成されます。すべての要素から拡張を削除しました。
files = [os.path.splitext(fname)[0] for fname in a]