समस्या है कि यहाँ PDB Cmd वर्ग का उपयोग करता है, जहां डिफ़ॉल्ट रूप से:
use_rawinput = 1
इसका मतलब है कि कंसोल से पढ़ने के लिए sys.stdout.readline()
की बजाय डिफ़ॉल्ट रूप से raw_input()
विधि का उपयोग करेगा। ऐसा इसलिए किया जाता है क्योंकि raw_input()
इतिहास का समर्थन करता है (केवल readline
मॉड्यूल लोड किया गया है) और अन्य उपयोगी बिट्स। केवल मुद्दा यह है कि raw_input()
पुनर्निर्देशन का समर्थन नहीं करता है, इसलिए यदि आप एक स्क्रिप्ट है:
#!/usr/bin/python
name=raw_input("Enter your name: ")
और यह
> python test.py
Enter your name: Alex
चलाने लेकिन, यदि आप इसे उत्पादन पुनर्निर्देशन यह अटक जाएगा के साथ चलाने के
> python test.py | tee log
यह वही है जो पीडीबी उपयोग करता है और यह भी अटक गया है। जैसा कि मैंने बताया है sys.stdin.readline()
पुनर्निर्देशन का समर्थन करता है और यदि आप उपरोक्त स्क्रिप्ट को readline()
का उपयोग करके पुनः लिखते हैं तो इसे काम करना चाहिए।
मूल मुद्दे पर वापस तुम सब करने की जरूरत है Cmd बताने के लिए raw_input()
का उपयोग नहीं करने के लिए है:
Cmd.use_rawinput = 0
या
pdb = pdb.Pdb()
pdb.use_rawinput=0
pdb.set_trace()
स्रोत
2014-11-13 01:44:38