我在寫一個方法,它將一個文件名和路徑指向一個目錄,並返回目錄中下一個可用的文件名,或者如果沒有名稱爲在文件之後排序。給定一個文件名,轉到目錄中的下一個文件
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
我現在使用這個程序是取一個chatlog文件夾,選擇一個隨機日誌,起始位置和長度。然後這些將被處理成類似MOTD的系列(通常)短日誌片段。我需要的下一個文件選取功能是當文件長度非常長或者起始文件位於文件末尾時,以便它繼續處於下一個文件的頂部(也就是午夜左右)。
由於上述方法並沒有謹慎地給出一個單獨的文件名和目錄,所以我願意使用不同的方法來選擇文件,無論如何我都會使用have to go use a listdir
and match to get an index。
你如何定義*「下一個可用的文件名」*? – UnholySheep
@UnholySheep具體來說,我正在處理chatlogs。我假設一個標準的字母數字排序會工作得很好,除非你是他們的類型的人在你的日誌名稱中使用表情符號。 – cjm