我有一個通過管道讀取stdin的python腳本,我似乎無法將它與pdb.set_trace()一起使用。在通過管道讀取stdin的腳本中使用pdb.set_trace()
my_script.py:
#!/usr/bin/env python
import sys
import pdb
def main():
for line in sys.stdin:
print "Printing a line: " +line
if __name__=='__main__':
status = main()
假設tempfile.csv是一些文件有兩行,
$ cat tempfile.csv
line1
line2
然後我可以運行我的腳本: $貓tempfile.csv | ./my_script.py,並且一切都很好:
$ cat tempfile.csv | ./my_script.py
Printing a line: line1
Printing a line: line2
在另一方面,如果我把pdb.set_trace()的任何地方,然後我得到一個錯誤。例如,把下面的高清主(pdb.set_trace()),然後我得到
$ cat tempfile.csv | ./my_script.py
> /home/ilangmore/mobiuss/TM/branches/hadooprotype/my_script.py(7)main()
-> for line in sys.stdin:
(Pdb) *** NameError: name 'line1' is not defined
(Pdb) *** NameError: name 'line2' is not defined
(Pdb)
Traceback (most recent call last):
File "./my_script.py", line 11, in <module>
status = main()
File "./my_script.py", line 7, in main
for line in sys.stdin:
File "./my_script.py", line 7, in main
for line in sys.stdin:
File "/usr/lib/python2.7/bdb.py", line 48, in trace_dispatch
return self.dispatch_line(frame)
File "/usr/lib/python2.7/bdb.py", line 67, in dispatch_line
if self.quitting: raise BdbQuit
bdb.BdbQuit
請注意,我的問題是可能與this question(即PDB默認情況下從標準輸入讀取),但我需要更多的幫助。
這似乎有幫助,但不完全。我將sys.stdin.read()放在幾個地方,並在下面放置了pdb.set_trace(),我不再得到NameError。但是,pdb不會打開......它只是退出(與上面相同的消息,沒有NameError) – 2012-02-07 16:14:06