оператор if не сохраняет данные переменных #Python - PullRequest
0 голосов
/ 06 мая 2020

Я ПОЛУЧИЛ ОТВЕТ ОТ M POST СПАСИБО ЗА ПОМОЩЬ МНЕ И WI SH ДРУГИЕ УЧИТЕСЬ НА МОИХ ОШИБКАХ УДАЧИ ВСЕ

У меня есть папки, которые принимают файлы .meta, и я хочу чтобы сохранить каждое имя файла в переменной, вся папка принимает одно и то же имя метафайла, но я добавил имя папки в файл с дефисом означает -> имя папки + '-' + имя файла

и хочу напечатать имя файла в каждой папке в файл, который я создал в конкретном драйвере c и использовал os.chdir () для загрузки в путь к файлу

, поэтому, когда я собираюсь печатать имя метафайла каждой папки в этот файл, он не сохраняет var

    for dirpath, dirnames, files in os.walk('.') :
        print('loop')
        for file in files :
            print('file')
            if file.endswith('.meta'):
                print('meta')
                METAPath = os.path.abspath(os.path.join(dirpath, file))
                METABase = os.path.basename(dirpath)
                if True :
                    if file.startswith(METABase + '-' + 'handling'):
                        HandlingFile = "'" + file + "'"
                        return HandlingFile
                    elif file.startswith(METABase + '-' + 'vehicles'):
                        VehiclesFile = "'" + file + "'"
                        return VehiclesFile
                    elif file.startswith(METABase + '-' + 'carvariations'):
                        CarVariationsFile = "'" + file + "'"
                        return CarVariationsFile
                    elif file.startswith(METABase + '-' + 'carcols'):
                        CarcolsFile = "'" + file + "'"
                        return CarcolsFile
                    elif file.startswith(METABase + '-' + 'dlctext'):
                        DLCTextFile = "'" + file + "'"
                        return DLCTextFile
                    print(HandlingFile, VehiclesFile ,CarVariationsFile ,CarcolsFile ,DLCTextFile)

Ошибка:

Traceback (most recent call last):
  File "D:\pythonEx\MyFiveMPython\test.py", line 220, in <module>
    Stress_Veh()
  File "D:\pythonEx\MyFiveMPython\test.py", line 213, in Stress_Veh
    print(HandlingFile, VehiclesFile ,CarVariationsFile ,CarcolsFile ,DLCTextFile)
NameError: name 'HandlingFile' is not defined

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Чтобы немного урезать ваш код ...

if file.startswith(...):
    HandlingFile = <some stuff>
    return HandlingFile

print(HandlingFile...)

Когда ваш оператор «if» возвращает False, HandlingFile никогда не определяется.

Аааа! Теперь я понимаю, что пытались сделать эти дополнительные пять операторов ... вы пытались инициализировать свои переменные. Вы не хотели делать

HandlingFile = HandlingFile

хотели

HandlingFile = None  # or False, or '' or something else
0 голосов
/ 06 мая 2020

удалите эти пять утверждений. Они являются источником вашей ошибки и ничего не делают.

                HandlingFile = HandlingFile
                VehiclesFile = VehiclesFile
                CarVariationsFile = CarVariationsFile
                CarcolsFile = CarcolsFile
                DLCTextFile = DLCTextFile
...