使用Pathlib搜索特定的文件夹

时间:2018-10-22 21:48:37

标签: python os.walk pathlib

我试图找到一个包含一堆fits文件的特定文件夹。我当前的代码是

redpath = os.path.realpath('.')         
thispath = os.path.realpath(redpath)         
thispath = os.path.realpath(thispath+'/../../../..')
p = Path(thispath)
userinput = 'n'
while (userinput == 'n'):
    text_file = next(p.glob('**/*.fits'))
    print("Is this the correct file path?")
    print(text_file)
    SearchedFiles = []
    SearchedFiles.append(text_file)
    userinput = input("y or n")
    if (userinput == 'n') :
        while(text_file in SearchedFiles) :
            p = Path(thispath)
            text_file = next(p.glob('**/*.fits'))

因此,如果pathlib找到错误的文件拳头,则用户会这样说,并且假定代码随后将经过并再次搜索,直到找到另一个带有fits文件夹的文件。我陷入无限循环,因为它只沿着一条路径走。

1 个答案:

答案 0 :(得分:0)

我不太确定我了解您要做什么。 但是,也难怪您会陷入循环:通过重新初始化p.glob(),您每次都会重新开始!

p.glob()实际上是一个生成器对象,这意味着它将自己跟踪进度。您可以按原样使用它:仅对其进行迭代。

例如,以下内容可能会更好地为您服务:

redpath = os.path.realpath('.')         
thispath = os.path.realpath(redpath)         
thispath = os.path.realpath(thispath+'/../../../..')
p = Path(thispath)
chosen = None
for text_file in p.glob('**/*.fits'):
    print("Is this the correct file path?")
    print(text_file)
    userinput = input("y or n")
    if userinput == 'y':
        chosen = text_file
        break
if chosen:
    print ("You chose: " + str(chosen))