[英]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.