2014-10-25 11 views
5

Derzeit schreiben Sie eine Funktion für ein Programm und eine Komponente ist die Suche, ob einzelne Variablen in einer Python-Datei verwendet werden.TypeError: erzwingt Unicode, benötigt String oder Puffer, NoneType gefunden

FUNKTION:

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​ 

Wenn ich die Funktion selbst verwendet - die Funktion einwandfrei funktioniert. jedoch, wenn ich auf das Programm als Ganzes nennen - ich bekomme die folgende Fehlermeldung:

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 

Ich habe absolut keine Ahnung, - wo ich falsch bin dabei - jede Hilfe sehr würde, sehr, sehr geschätzt !! !

danke.

+0

Möglicherweise verwandte: [Unicode Nötigung: need String oder Puffer, gefunden NoneType wenn in Django Admin-Rendering] (http: // Stackoverflow. com/q/16169035/608639) und [TypeError: erzwingt Unicode: benötigen Zeichenfolge oder Puffer, NoneType gefunden] (http://stackoverflow.com/q/24506928/608639). – jww

Antwort

8

python_filename ist auf None, die für die Funktion open() kein gültiges Argument ist:

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

Warumpython_filename ist None kann nicht aus dem Code bestimmt werden Sie auf dem Laufenden. Die Zurückverfolgungs Sie geliefert schlägt der Wert in der Funktion sorted_list() stammt, schlage ich vor, Sie nach Hinweisen suchen dort beginnen:

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

Doch das ist nur eine Vermutung; Sie müssen den gesamten Code in diesem Traceback verfolgen, um zu sehen, wo genau die None zuerst gesetzt wird.

+0

Woher weißt du, dass python_filename auf keine festgelegt ist ?? –

+2

Die Ausnahmemeldung sagt Ihnen. 'open()' erwartete eine Zeichenkette, erhielt aber stattdessen ein Objekt vom Typ 'NoneType'. Es gibt immer nur ein Objekt, das zu dieser Beschreibung passt: 'None'. –

0

Versuchen Sie, diese Art und Weise zu schreiben:

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

Es sollte funktionieren

Verwandte Themen