我正在编写一个方法,它接受目录的文件名和路径,并返回目录中的下一个可用文件名,如果没有名称可以在文件后排序的文件,则返回None
。
There are plenty of questions about how to list all the files in a directory or 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的系列(通常)短日志片段。我需要的下一个文件选择能力是当长度异常长或起始行位于文件的末尾时,它继续在下一个文件的顶部(也就是在午夜环绕)。
我愿意使用不同的方法来选择文件,因为上面的方法并没有谨慎地提供单独的文件名和目录,而且我还是have to go use a listdir
and match to get an index。
答案 0 :(得分:1)
你应该考虑重写你的程序而不必使用它。但这就是你可以做到的:
import os
def nextFile(filename,directory):
fileList = os.listdir(directory)
nextIndex = fileList.index(filename) + 1
if nextIndex == 0 or nextIndex == len(fileList):
return None
return fileList[nextIndex]
print(nextFile("mail","test"))