ファイル名とディレクトリへのパスを取得し、ディレクトリに次の使用可能なファイル名を返します。None
ファイルの後ろにソートします。ファイル名を指定すると、ディレクトリ内の次のファイルに移動します。
There are plenty of questionsabout how to list all the files in a directoryor iterate over themが、私は、単一の次のファイル名を見つけるための最善の解決策は、前の答えの一つが発生したというリストを使用して、リスト内の現在のファイルの場所を見つけて選択することであるかどうかわからないです次の要素(または最後の要素が既にある場合はNone
)。
編集:現在のファイルピッキングコードです。これは、プロジェクトの別の部分から再利用され、潜在的にネストされた一連のディレクトリからランダムなイメージを選択するために使用されます。
# picks a file from a directory
# if the file is also a directory, pick a file from the new directory
# this might choke up if it encounters a directory only containing invalid files
def pickNestedFile(directory, bad_files):
file=None
while file is None or file in bad_files:
file=random.choice(os.listdir(directory))
#file=directory+file # use the full path name
print "Trying "+file
if os.path.isdir(os.path.join(directory, file))==True:
print "It's a directory!"
return pickNestedFile(directory+"/"+file, bad_files)
else:
return directory+"/"+file
私が今使っているプログラムは、チャットログのフォルダをとり、ランダムなログ、開始位置、長さを選ぶことです。これらは、MOTDのような一連の(通常は)短いログスニペットに処理されます。次のファイルのピッキング能力が必要なのは、長さが異常に長くなったり、開始行がファイルの最後にあるため、次のファイルの先頭に移動します(a.k.a.が真夜中に折り返します)。
上記の方法では別個のファイル名とディレクトリが慎重に与えられず、私はhave to go use a listdir
and match to get an indexとにかく別の方法を使用してファイルを選択するというアイデアはありません。
*「次の利用可能なファイル名」*はどのように定義しますか? – UnholySheep
@UnholySheep具体的には、私はチャットログを処理しています。私はあなたのログ名に絵文字を使用する人のタイプでない限り、標準の英数字ソートはうまくいくと思います。 – cjm