更好的调试:需要一个字符缓冲区对象
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
.
我正在尝试将字符串部分传递给它下面的 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
.