Проблема во встроенном терминале VS Code (macOS) при объявлении функции PythonPython

Программы на Python
Anonymous
Проблема во встроенном терминале VS Code (macOS) при объявлении функции Python

Сообщение Anonymous »

У меня возникла проблема при использовании встроенного терминала Visual Studio Code в macOS.
Я использую Python во встроенном терминале VS Code и пытаюсь объявить относительно большую функцию непосредственно в REPL.
Сама функция корректна и уже проверена ранее (она работает нормально при выполнении из файла .py или при запуске на моем компьютере с Windows).
Однако при выборе и отправке функции для объявлено, код неожиданно нарушается/дублируется, что приводит к синтаксической ошибке.
Упрощенный пример ошибки:

Код: Выделить всё

File "", line 29
raise Exception("Não foi possível identificar a maior prestaçã        raise Exception("Não foi posslinha
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: invalid syntax. Perhaps you forgot a comma?
Во время объявления функции в терминале:
  • части кода автоматически дублируются
  • содержимое прерывается в середине строк
  • присутствует смесь ранее набранных блоков кода
  • терминал кажется «испортить» исходную структуру функции
Используемая функция

Код: Выделить всё

def pegar_maior_prestacao(driver, wait):
linhas = wait.until(
EC.presence_of_all_elements_located(
(By.CSS_SELECTOR, "table.table tbody tr")
)
)

maior_prest = -1
dados_maior_linha = {}

for linha in linhas:
colunas = linha.find_elements(By.TAG_NAME, "td")
if len(colunas) < 11:
continue

try:
prest_n = int(limpar_texto(colunas[1].text))
except ValueError:
continue

if prest_n > maior_prest:
maior_prest = prest_n

dados_maior_linha = {
"num_prestacao": prest_n,
"data_vencimento": limpar_texto(colunas[2].text),
"data_pagamento": limpar_texto(colunas[3].text),
"historico": limpar_texto(colunas[4].text),
"forma_de_pagamento": limpar_texto(colunas[5].text),
"valor_pago": limpar_texto(colunas[10].text).replace("R$ ", "").strip()
}

if not dados_maior_linha:
raise Exception("Não foi possível identificar a maior prestação da tabela.")

return dados_maior_linha

При объявлении в терминале (с использованием Shift + Return)

Код: Выделить всё

def pegar_maior_prestacao(driver, wait):
...     linhas = wait.until(
EC.presence_of_all_elements_located(
(By.CSS_SELECTOR, "table.table tbody tr")
)
)
maior_prest = -1
dados_maior_linha = {}
for linha in linhas:
colunas = linha.find_elements(By.TAG_NAME, "td")
if len(colunas) < 11:
continue
try:
prest_n = int(limpar_texto(colunas[1].text))
except ValueError:
continue
if prest_n > maior_prest:
maior_prest = prest_n
dados_maior_linha = {
"num_prestacao": prest_n,
"data_vencimento": limpar_texto(colunas[2].text),
"data_pagamento": limpar_texto(colunas[3].text),
"historico": limpar_texto(colunas[4].text),
"forma_de_pagamento": limpar_texto(colunas[5].text),
"valor_pago": limpar_texto(colunas[10].text).replace("R$ ", "").strip()
}
if not dados_maior_linha:
raise Exception("Não foi possível ident...          EC.presence_of_all_elements_located(
(By.CSS_SELECTOR, "table.table tbody tr")
)
)
maior_prest = -1
dados_maior_linha = {}
for linha in linhas:
colunas = linha.find_elements(By.TAG_NAME, "td")
if len(colunas) < 11:
continue
try:
prest_n = int(limpar_texto(colunas[1].text))
except ValueError:
continue
if prest_n > maior_prest:
maior_prest = prest_n
dados_maior_linha = {
"num_prestacao": prest_n,
"data_vencimento": limpar_texto(colunas[2].text),
"data_pagamento": limpar_texto(colunas[3].text),
"historico": limpar_texto(colunas[4].text),
"forma_de_pagamento": limpar_texto(colunas[5].text),
"valor_pago": limpar_texto(colunas[10].text).replace("R$ ", "").strip()
}
if not dados_maior_linha:
raise Exception("Não foi possível ident        raisor prestaçã        raise Excepti...             (By.CSS_SELECTOR, "table.table tbody tr")
...         )
...     )
...     maior_prest = -1
...     dados_maior_linha = {}
...     for linha in linhas:
...         colunas = linha.find_elements(By.TAG_NAME, "td")
...         if len(colunas) < 11:
...             continue
...         try:
...             prest_n = int(limpar_texto(colunas[1].text))
...         except ValueError:
...             continue
...         if prest_n > maior_prest:
...             maior_prest = prest_n
...             dados_maior_linha = {
...                 "num_prestacao": prest_n,
...                 "data_vencimento": limpar_texto(colunas[2].text),
...                 "data_pagamento": limpar_texto(colunas[3].text),
...                 "historico": limpar_texto(colunas[4].text),
...                 "forma_de_pagamento": limpar_texto(colunas[5].text),
...                 "valor_pago": limpar_texto(colunas[10].text).replace("R$ ", "").strip()
...             }
...     if not dados_maior_linha:
...         raise Exception("Não foi possível ident        raisor prestaçã        raise Exception("Não foi possível
File "", line 28
raise Exception("Não foi possível ident        raisor prestaçã        raise Exception("Não foi possível
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: invalid syntax. Perhaps you forgot a comma
Для уточнения, сама функция уже работает - при выполнении той же процедуры на windowsns все корректно

Вернуться в «Python»