dinky-spike559
@dinky-spike559

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

写真フォルダーにある写真のファイルの名前をテキストファイルに羅列したい

解決したいこと

YOLOv3を使って機械学習をしようと考えています。使う言語はpythonです。

学習の際に学習に用いる写真のファイル名をテキストファイルに羅列しなくてはいけないのですが、どのようなコードを書けばそれが可能になるのでしょうか。
写真はフォルダーにまとめてあります。

テキストファイルはこのような内容にしたい

photo1
photo2
photo3
・
・
・

のように拡張子なしで写真の名前のみをテキストファイルに起こしたいのですが、どうすればいいのでしょうか。

0

3Answer

リストファイル作りたいだけでしたらシェルで ls-1 path/to/photo_directory > hoge.txt とか実行するのはどうでしょうか?

2Like

Comments

  1. あ、すみません。拡張子なしなことを見落としていました。
    拡張子が単一でしたら下記のように書けると思います。

    ls /path/to/photo_directory | xargs basename -s .jpg > hoge.txt

    色んな拡張子がありそうでしたらsedで置換する方がいいと思います。
    まぁ条件が複雑になってきたら他の方が書かれているように素直にPythonで書いたほうが楽になってきますね。

拡張子なしで写真の名前のみは自力で!

import os
def getFile(dir):
   for file in os.listdir(dir):
      ans = ベース名のみ取得する関数(file)
      yield ans, file

with open("/var/photo.txt","w", encoding="UTF-8") as fd:
   for ans, file in getFile("/var/photo"):
       fd.write(ans)
   fd.flush()

こんな感じでしょうか?
glob.glob でもok /var/photo にはファイルのみとする。暇人x in電車より

1Like

Comments

  1. @ligunさんの意見 basename コマンドはワイルドカードが使えませんか?
    xargs basename -s .* > hoge.txt

    何故にコメント入力が出来ない?

@HalHarada さん
ご意見ありがとうございます。
少なくとも自分の環境(Ubuntu+zsh)だとできない事とヘルプや検索でも情報出てきませんでした。

回答へのコメントは質問者か回答者本人しかできない仕様のようです。

1Like

Your answer might help someone💌