パイプを介して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は、その後、私は私のスクリプトを実行できる2本のライン、
$ 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を()()入れて、その後、私は得る私の質問は、おそらくthis questionに関連していることを
$ 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
注(すなわち、PDB、デフォルトでは標準入力から読み込み)が、私はより多くの助けを必要としています。
これは役に立ちそうだが完全ではないようだ。私はsys.stdin.read()をいくつかの場所に置き、pdb.set_trace()を以下に置くと、私はもはやNameErrorを取得しません。しかし、pdbは開かない...それはちょうど終了する(NameErrorなしで上記と同じメッセージ) –