Sto eseguendo Eclipse con PyDev e Python 3.2 su Windows Vista e stavo lavorando a un'esercitazione su Python e ctypes.Eclipse e Python 3: perché printf() da ctypes viene visualizzato nell'output della console dopo le successive istruzioni print()
Tuttavia, ho scoperto che quando chiamo msvcrt.printf() per stampare una stringa, questo non viene visualizzato nell'output della console per Eclipse finché non vengono visualizzate tutte le altre istruzioni di stampa.
Ecco il codice esatto che uso:
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!?")
e qui è l'output:
23
foo
why!?
Testing: Hello Worlds!
Le uniche spiegazioni che ho visto altrove (per C in generale) parlare di come printf è tamponata e ha bisogno di una nuova riga prima della visualizzazione, ma c'è una nuova riga nella stringa e ne ho aggiunta anche una direttamente alla dichiarazione printf ('printf ("Test:% s \ n", ...') e non ha fatto alcuna differenza.
Voglio lavorare in Eclipse, non voglio dover continuare ad aprire un prompt dei comandi ogni volta che voglio testare gli script, quindi c'è un modo per risolvere questo ordine nell'output della console? E perché succede questo?
Stavo seguendo un tutorial su ctypes, che ho pianificare di utilizzare per funzioni diverse da printf in seguito. La ragione per cui volevo capire questo e farla funzionare è perché se non riesco a capire cosa sta succedendo con questo semplice compito, come posso aspettarmi di capire quelli più complessi? – Brian