के माध्यम से stdin पढ़ता है मेरे पास एक पाइथन स्क्रिप्ट है जो एक पाइप के माध्यम से stdin पढ़ती है, और मैं इसे pdb.set_trace() के साथ उपयोग नहीं कर सकता।एक स्क्रिप्ट में 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 | अगर मैं pdb.set_trace() डाल कहीं भी तो मैं कोई त्रुटि मिलती है
$ cat tempfile.csv | ./my_script.py
Printing a line: line1
Printing a line: line2
दूसरी ओर,: ./my_script.py, और सब कुछ ठीक है। उदाहरण के लिए, डीईएफ़ मुख्य (नीचे 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 डिफ़ॉल्ट रूप से stdin से पढ़ता है), लेकिन मैं और अधिक मदद की जरूरत है।
यह मदद करने के लिए प्रतीत होता है लेकिन पूरी तरह से नहीं। मैंने sys.stdin.read() को कुछ स्थानों में, और pdb.set_trace() नीचे रखा है, और अब मुझे NameError नहीं मिला है। हालांकि, पीडीबी नहीं खुलता है ... यह अभी निकलता है (ऊपर जैसा ही संदेश, नाम त्रुटि के बिना) –