Python ошибочно добавляет расширение файла в строку пути

В настоящее время я борюсь со следующей проблемой:

Моя структура папок выглядит так:

      master
 - resources
   customFile.fmu
fileCallingFMU.py

При выполнении fileCallingFMU.py я передаю строку пути, например

      path = "./resources/customFile.fmu"

Мой сценарий содержит суперфункцию, в которую я передаю переменную пути. Но каждый раз, когда я выполняю сценарий, он срабатывает с исключением:

      Exception has occurred: FileNotFoundError
[Errno 2] No such file or directory: b'2021-11-16_./resources/customFile.fmu.txt'
  File "[projectFolder]\fileCallingFMU.py", line 219, in __init__
    super().__init__(path, config, log_level)
  File "[projectFolder]\fileCallingFMU.py", line 86, in <module>
    env = gym.make(env_name)

Мой настоятельный вопрос сейчас следующий:

Почему и как Python управляет переменной пути с префиксом даты и .txt в качестве расширения файла ?!

Надеюсь, кто-нибудь сможет просветить меня по этому поводу ...

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

Я пытаюсь запустить пример ModelicaGym .

Мой fileCallingFMU.py содержит следующий код:

      path = "./resources/customFile.fmu"
    env_entry_point = 'cart_pole_env:JModelicaCSCartPoleEnv'

    config = {
        'path': path,
        'm_cart': m_cart,
        'm_pole': m_pole,
        'theta_0': theta_0,
        'theta_dot_0': theta_dot_0,
        'time_step': time_step,
        'positive_reward': positive_reward,
        'negative_reward': negative_reward,
        'force': force,
        'log_level': log_level
    }

    from gym.envs.registration import register
    env_name = env_name

    register(
        id=env_name,
        entry_point=env_entry_point,
        kwargs=config
    )

env = gym.make(env_name)

Полный код для точки входа можно найти здесь .

1 ответ

Как указал user1643973 , проблема была скрыта в библиотеке ModelicaGym.

Регистратору не удалось создать правильный файл журнала, поскольку имя модели не было должным образом сохранено в переменной self.model.

Источник этой ошибки лежал в строке

      self.model_name = model_path.split(os.path.sep)[-1]

из-за того, что библиотека os не смогла разделить мою строку пути

      "./resources/customFile.fmu"

После изменения его на

      ".\\resources\\customFile.fmu"

все работает как положено.

Спасибо еще раз!

Другие вопросы по тегам