Использование Pathlib для поиска определенной папки - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь найти определенную папку, содержащую кучу подходящих файлов.Текущий код, который у меня есть,

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 найдет неверный файл, пользователь скажет об этом, и, предположительно, код будет затем проходить и искать снова, пока не найдет другой файл с подходящими папками.Я застреваю в бесконечном цикле, потому что он идет только по одному пути.

1 Ответ

0 голосов
/ 23 октября 2018

Я не совсем уверен, что понимаю, что вы пытаетесь сделать.Однако неудивительно, что вы застряли в цикле: при повторной инициализации 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))
...