के बाद ctypes से printf() को ctypes में प्रदर्शित करता है, मैं Windows Vista पर PyDev और Python 3.2 के साथ ग्रहण चला रहा हूं, और पायथन और ctypes पर एक ट्यूटोरियल के माध्यम से काम कर रहा था।ग्रहण और पायथन 3: बाद के प्रिंट() कथन
हालांकि, मैंने पाया कि जब मैं एक स्ट्रिंग मुद्रित करने के लिए msvcrt.printf() को कॉल करता हूं, तो यह ग्रहण के लिए कंसोल आउटपुट में प्रदर्शित नहीं होता है जब तक कि अन्य सभी प्रिंट स्टेटमेंट प्रदर्शित नहीं होते हैं।
यहाँ सटीक कोड मैं का उपयोग करें:
from ctypes import *
msvcrt = cdll.msvcrt
message_string = "Hello Worlds!\n"
printf = msvcrt.printf
print(printf("Testing: %s".encode('ascii'),message_string.encode('ascii')))
print("foo")
print("why!?")
और यहां उत्पादन होता है:
23
foo
why!?
Testing: Hello Worlds!
केवल स्पष्टीकरण मैं कहीं और (सामान्य रूप में सी के लिए) को देखा है उल्लेख कैसे printf बफ़र है और प्रदर्शित करने से पहले एक नई लाइन की आवश्यकता है, लेकिन स्ट्रिंग में एक नई लाइन है, और मैंने सीधे प्रिंटफ स्टेटमेंट ('printf ("परीक्षण:% s \ n", ...') में भी एक जोड़ा और इससे कोई फर्क नहीं पड़ता।
मैं ग्रहण में काम करना चाहता हूं, हर बार जब मैं स्क्रिप्ट का परीक्षण करना चाहता हूं, तो मैं कमांड प्रॉम्प्ट खोलना नहीं चाहता हूं, तो क्या कोई तरीका है कि मैं कंसोल आउटपुट में इस ऑर्डर को ठीक कर सकता हूं? और ऐसा क्यों होता है?
मैं सिर्फ ctypes पर एक ट्यूटोरियल, पीछा कर रहा था जो मैं बाद में printf के अलावा कार्यों के लिए उपयोग करने की योजना है। कारण मैं इसे समझना चाहता था और इसे काम पर लेना चाहता था क्योंकि अगर मैं समझ नहीं पा रहा हूं कि इस सरल कार्य के साथ क्या हो रहा है, तो मैं और अधिक जटिल लोगों को कैसे समझ सकता हूं? – Brian