2014-10-25 11 views
5

Attualmente la scrittura di una funzione per un programma e un componente consiste nel cercare se una singola variabile viene utilizzata all'interno di un file python.TypeError: coercizione a Unicode, necessità di stringhe o buffer, NoneType found

FUNZIONE:

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​ 

quando ho usato la funzione di per sé - la funzione lavora correttamente. Tuttavia quando chiamo sul programma nel suo complesso - ottengo il seguente messaggio di errore:

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 

Non ho assolutamente idea - dove sto andando male - tutto l'aiuto sarebbe molto, molto, molto amato !! !

grazie.

+0

possibilmente correlate: [costringere a Unicode: stringa di necessità o di tampone, NoneType trovato quando il rendering in Django admin] (http: // StackOverflow. it/q/16169035/608639) e [TypeError: coercing verso Unicode: bisogno di stringhe o buffer, NoneType found] (http://stackoverflow.com/q/24506928/608639). – jww

risposta

8

python_filename è impostato su None, che non è un argomento valido per la funzione open():

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

Perchépython_filename è None non può essere determinato dal codice che avete inviato. Il traceback Lei forniti suggerisce il valore di origine nella funzione sorted_list(), vi suggerisco di iniziare a cercare lì per indizi:

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

Tuttavia, questo è solo una supposizione; dovrai tracciare tutto il codice contenuto in tale traceback per vedere dove viene impostato per la prima volta esattamente lo None.

+0

Come fai a sapere che python_filename è impostato su none ?? –

+2

Il messaggio di eccezione ti dice. 'open()' si aspettava una stringa, ma è stato invece assegnato un oggetto di tipo 'NoneType'. C'è sempre un solo * oggetto * che si adatta alla descrizione: "Nessuno". –

0

provare a scrivere in questo modo:

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

Si dovrebbe funzionare

Problemi correlati