web-dev-qa-db-fra.com

TypeError: contraignant à Unicode, chaîne requise ou tampon, NoneType trouvé

Actuellement, l'écriture d'une fonction pour un programme et un composant consiste à rechercher si une seule variable est utilisée dans un fichier python. 

UNE FONCTION:

def SINGLE_CHAR_VAR(python_filename):
    file = open(python_filename)
    lines = [0]
    SINGLE_CHAR_VAR = []
    for line in file:
        stripped = line.strip('\n\r')
        lines.append(stripped)

    from utils import vars_indents
    variable_list = (vars_indents(python_filename))[0]
    for i in range(1, len(variable_list)):
        if len(variable_list[i][0][0]) == 1:
            SINGLE_CHAR_VAR.append(['SINGLE_CHAR_VAR', i, variable_list[i][0][1], variable_list[i][0][0], lines[i]])      
    return SINGLE_CHAR_VAR​

Lorsque j'utilise la fonction seule - la fonction fonctionne correctement. Cependant, lorsque j'appelle le programme dans son ensemble, le message d'erreur suivant s'affiche:

Traceback (most recent call last):
  File "<web session>", line 1, in <module>
  File "lint_2.py", line 141, in lint
    sorted_error_list = sorted_list(list_of_file_errors)
  File "lint_2.py", line 84, in sorted_list
    error_list = total_error_list(python_filename)
  File "lint_2.py", line 65, in total_error_list
    single_char_var_list = SINGLE_CHAR_VAR(python_filename)
  File "lint_2.py", line 33, in SINGLE_CHAR_VAR
    file = open(python_filename)
TypeError: coercing to Unicode: need string or buffer, NoneType found

Je n'ai absolument aucune idée - là où je me trompe - toute aide serait très, très chérie !!!

merci. 

5
Vanessa_Gez

python_filename est défini sur None, ce qui n'est pas un argument valide pour la fonction open():

>>> open(None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: coercing to Unicode: need string or buffer, NoneType found

Pourquoi python_filename est None ne peut pas être déterminé à partir du code que vous avez publié. Le suivi que vous avez fourni suggère que la valeur provient de la fonction sorted_list(), je vous suggère donc de commencer à chercher des indices:

  File "lint_2.py", line 84, in sorted_list
    error_list = total_error_list(python_filename)

Cependant, ce n'est qu'une supposition; vous devrez suivre tout le code de cette trace pour voir où exactement la variable None est définie. 

10
Martijn Pieters

Essayez d'écrire de cette façon:

ssh.exec_command()
stdin.flush()
stdin.channel.shutdown_write()

Ça devrait marcher

0
Vikram Sharma