簡體   English   中英

更好的調試:期望一個字符緩沖區對象

[英]Better debugging: expected a character buffer object

我正在嘗試將字符串部分傳遞給它下面的python函數,我不確定為什么會看到此錯誤。 我對此的理解是,它沒有在預期的位置得到字符串。 我已經嘗試了投射,但是那也不起作用。 如何解決此問題或獲取更多調試信息?

section = str('[log]')
some_var = 'filename ='

edit_ini('./bench_config.ini', section, some_var, 'logs/ops_log_1')

導致錯誤的函數

def edit_ini(filename, section, some_var, value):

    section = False

    flist = open(filename, 'r').readlines()

    f = open(filename+'test', 'w')

    for line in flist:
            line = str(line)
            print line
            if line.startswith(section):
                    section = True
                    if( section == True ):
                            if( line.startswith(some_var) ):
                                    modified = "%s = $s", variable, value
                                    print >> f, modified
                            section = False
            else:
                    print >> f, line
    f.close()

但是我看到錯誤:

Traceback (most recent call last):
  File "bench.py", line 89, in <module>
    edit_ini('./config.ini', section, some_var, 'logs/log_1')
  File "bench.py", line 68, in edit_ini
    if line.startswith(section):
TypeError: expected a character buffer object

您用section=False覆蓋了傳入的section 該錯誤是因為您無法調用string.startswith( False )

調試python的一種方法是使用pdb 這樣可以幫助您在此處找到問題。 您應該閱讀規范,但是這里是有關如何使用pdb的快速指南。

import pdb
# your code ...
pdb.set_trace() # put this right before line.startswith(section)

然后,當您運行代碼時,將在故障發生之前立即執行。 然后,您可以在pdb中打印該section ,並查看它是否為False ,然后嘗試找出它為什么為False

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM