ファイル名のリストをファイル名に基づいてx:yの比率で並べ替える最適化されたアプローチを作成しようとしています。このファイルリストは、os.scandir(より良いパフォーマンス対os.listdir、src:Python Docs scandir)を使用して調達されました。定義済みの比率でファイル名のリストを分割する
例 -
ファイル(拡張子は無視) -
A_1、A_2、... A_10(ここでAは、ファイル名と1であるファイルのサンプル数である)
B_1 、
上B_2、... B_10
とそれでは、xと言ってみましょう:だから3 :yの比率は7です私は70%のファイル名(A_1..A7、B_1..B_7)と30%(A_8-A_10、B_8..B_10)を別々のリストに入れたいと思っています。リスト1のリスト1〜3の7つのファイルに分割されていれば、ファイルはA_1、A_9、A_5などであることを意味します。
このディレクトリは巨大(〜150kファイル)であり、ファイルの種類ごとにサンプルが異なります。つまり、ファイル名がAのファイルに1000個のファイルがあるか、5個しかない可能性があります。また、約400個の固有のファイル名があります。
この現在のソリューションは、ファイル名ごとに正確な比率の目的に反しているため、解決策とは一切呼ばれるべきではありません。現在、fileObjectのリスト(基本的にはAのような名前、1のような番号、A_1のファイル内のデータなど)を全体としてx:yの比率で分割し、使用時にエントリが任意の順序で生成されるという事実を利用していますos.scandir。少なくとも、有効な解決策になる
ratio_number = int(len(list_of_fileObjects) *.7)
list_70 = list_of_fileObjects[:ratio_number]
list_30 = list_of_fileObjects[ratio_number:]
私の第二のアプローチは、各ファイル名を個別にリストを作成することでした(ファイルのリスト全体をソートする必要)、比でそれを分割し、各ファイル名のためにこれを行います。私はこの問題のよりpythonic /エレガントなソリューションを探しています。扱うデータのサイズを考えれば、どんな提案や助けもありがたいです。
なぜダウンボテッドなのかを知ることは何ですか?私はフォーラムには新しく、特にいくつかの研究で質問をし、アプローチを説明することが推奨されるべきです。これは私を悲しんで、さらに悪いのは、コメントを残していない人たちです。 –