Используйте функцию ввода и цикл while для передачи пути в Python - PullRequest
0 голосов
/ 28 мая 2019

Когда я определяю filePath и os.walk, все идет хорошо:

filePath = 'C:/Users/User/Desktop/test/'

for subdir, dirs, files in os.walk(filePath):
    print(subdir)

Выход:

C:/Users/User/Desktop/test/
C:/Users/User/Desktop/test/a
C:/Users/User/Desktop/test/a\a1
C:/Users/User/Desktop/test/a\a2
C:/Users/User/Desktop/test/a\a3

Но когда я использую функцию input и цикл while, я не могу передать filePath в os.walk(filePath), я не знаю почему. Кто-нибудь может помочь мне разобраться? Спасибо.

status = True
while status:
    filePath = input(r"Please write your path:")
    if filePath.strip() == "":
        status = False

for subdir, dirs, files in os.walk(filePath):
    print(subdir)

Выход:

Please write your path:C:/Users/User/Desktop/test/
Please write your path:'C:/Users/User/Desktop/test/'
Please write your path:

EDIT:

status = True
while status:
    filePath = input(r"Please write your path:")
    if os.path.exists(filePath):
        status = False

for subdir, dirs, files in os.walk(filePath):
    print(subdir)

Выход:

Please write your path:C:/Users/User/Desktop/test/

C:/Users/User/Desktop/test/
C:/Users/User/Desktop/test/a
C:/Users/User/Desktop/test/a\a1
C:/Users/User/Desktop/test/a\a2
C:/Users/User/Desktop/test/a\a3

Тогда все закончится, я хочу, чтобы код был перезапущен, чтобы я мог написать другой путь и сказать: C:/Users/User/Desktop/test1/ за один раз, пока путь, который я пишу, не будет пустым, он остановится.

1 Ответ

1 голос
/ 28 мая 2019

Вместо filePath.strip() == "" используйте os.path.exists(), чтобы проверить, является ли данный путь действительным или нет.

TRY: -

import os

status = True
while status:
    filePath = input(r"Please write your path:")
    if os.path.exists(filePath):
        status = False

for subdir, dirs, files in os.walk(filePath):
    print(subdir)

PS: - Ваша схема именования для os.walk() неверна, os.walk(), в общем случае возвращается в формате Dirname, SubDir_list, File_list , поэтому вы должны назвать переменные, в которых они распакованы, в виденадлежащим образом.Вы назвали переменную, которая будет хранить путь к каталогу, как subdir, а переменную, хранящую список sub_directory, как dirs, что может сильно сбить с толку других.Поэтому попробуйте назвать их в соответствии с соглашением, чтобы другим было легче понять

РЕДАКТИРОВАТЬ: -

import os

status = True
while status:
    filePath = input(r"Please write your path:")
    if os.path.exists(filePath):
        for subdir, dirs, files in os.walk(filePath):
            print(subdir)

    if filePath is "":
        status = False

Этот код будет выполняться до пустой строки '' предоставляется как путь к файлу.(пустая строка ничего не значит)

...