2014-10-25 18 views
5

वर्तमान में एक प्रोग्राम के लिए एक फ़ंक्शन लिखना और एक घटक यह खोजना है कि एक पाइथन फ़ाइल में एक चर का उपयोग किया जा रहा है या नहीं।टाइप एरर: यूनिकोड को कॉरर्सिंग, स्ट्रिंग या बफर की आवश्यकता है, कोई भी टाइप नहीं मिला

फंक्शन:

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​ 

जब मैं अपने आप में समारोह के लिए इस्तेमाल किया - समारोह ठीक से काम करता। - हालांकि जब मैं एक पूरे के रूप कार्यक्रम पर फोन मैं निम्न त्रुटि संदेश मिलता है:

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 

मैं बिल्कुल पता नहीं है - मैं कहाँ गलत हो रहा हूँ - किसी भी मदद बहुत, बहुत, बहुत पोषित किया जाएगा !! !

धन्यवाद।

+0

संभवतः संबंधित: [यूनिकोड को मजबूर: जरूरत स्ट्रिंग या बफर, NoneType जब Django व्यवस्थापक में प्रतिपादन पाया] (http: // stackoverflow। कॉम/क्यू/16169035/608639) और [टाइपरर: यूनिकोड को कॉरर्सिंग: स्ट्रिंग या बफर की आवश्यकता है, कोई भी टाइप नहीं मिला] (http://stackoverflow.com/q/24506928/608639)। – jww

उत्तर

8

python_filenameNone पर सेट किया जाता है, जो open() समारोह के लिए एक वैध तर्क नहीं है:

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

क्योंpython_filenameNone कोड आप पोस्ट से निर्धारित नहीं किया जा सकता है। ट्रैस बैक आपके द्वारा बताये गये अनुसार मूल्य sorted_list() समारोह में निकलती है, मैं तुम्हें सुराग के लिए वहाँ तलाश शुरू सुझाव देते हैं:

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

हालांकि, कि सिर्फ एक अनुमान है, आपको उस ट्रेसबैक में सभी कोड के माध्यम से पता लगाना होगा कि यह देखने के लिए कि वास्तव में None कहां सेट है।

+0

आप कैसे जानते हैं कि python_filename किसी के लिए सेट नहीं है ?? –

+2

अपवाद संदेश आपको बताता है। 'ओपन()' एक स्ट्रिंग की उम्मीद है, लेकिन इसके बजाय 'noneType' प्रकार का ऑब्जेक्ट दिया गया था। केवल * एक * ऑब्जेक्ट है जो उस वर्णन को फिट करता है: 'कोई नहीं'। –

0

इस तरह से लिखने की कोशिश करें:

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

यह काम करना चाहिए

संबंधित मुद्दे