Ir para conteúdo
Fórum Script Brasil
  • 0

Erro em função de módulo importado


leandroisrael

Pergunta

Olá. Eu tenho o seguinte módulo com apenas esta função no código:

import sys

# função para imprimir na tela uma lista aninhada
def print_lol(the_list, ident=False, level=0, arq=sys.stdout):
# the_list recebe a lista
# ident para o usuário informar se haverá ou não identação
# level = 0 inicia a identação com um valor padrão

# laço para leitura dos itens na lista
    for each_item in the_list:
        # teste para validar o tipo do item que está sendo iterado
        if isinstance(each_item, list):
            # caso o item seja uma lista, recursivamente a função é chamada
            # incremento no level para que haja a identação
            print_lol(each_item, ident, level+1, arq)
        # caso o item não seja uma lista
        else:
            # testa a identação
            if ident:
                print("\t" * level, end="", file = arq)
            print(each_item, file=arq)

e eu chamo o módulo neste outro código:

import nester
man = []
other = []

try:
    data = open('sketch.txt')

    for each_line in data:
        try:
            (role, line_spoken) = each_line.split(':', 1)
            line_spoken = line_spoken.strip()
            if role == 'Man':
                man.append(line_spoken)
            elif role == 'Other Man':
                other.append(line_spoken)
            # print(role, ' said: ', line_spoken, end='')
        except ValueError:
            pass

    data.close()
except IOError:
    print('The data file is missing!')

try:
    with open('man_data.txt', 'w') as man_file: 
        nester.print_lol(man, arq = man_file)
    with open('other_data.txt', 'w') as other_file:
        nester.print_lol(other, arq = other_file)
except IOError as err:
    print('File error: ' + st(err))

porém quando tento executar aparece:

line 59, in <module>
    nester.print_lol(man, arq = man_file)
TypeError: print_lol() got an unexpected keyword argument 'arq'

aonde está o erro? Praticamente refiz tudo, e ainda assim não funcionou.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

tenta primeiro executar a função no script de origem para depois tentar importar.

em seguida importa a função e executa ela da forma mais simples possivel

 

def print_lol(the_list, ident=False, level=0, arq=None):
    for each_item in the_list:
        if isinstance(each_item, list):
            print_lol(each_item, ident, level+1, arq)
        else:
            if ident:
                print("\t" * level, end="", file = arq)
            print(each_item, file=arq)

print_lol([1, 2, 3, 4, 5], arq = open('teste.txt', 'w'))

aqui funcionou

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...