impression python ne fonctionne pas correctement après avoir utilisé malédictions

StackOverflow https://stackoverflow.com/questions/3657103

  •  01-10-2019
  •  | 
  •  

Question

J'ai créé simple avec malédictions IUG. Cependant, lorsque le menu malédictions est terminée, la fonction d'impression n'imprime rien à l'écran jusqu'à ce que les principales sorties du programme.

Dans l'exemple ci-dessous, lorsque calc.py est exécuté, le texte « liste de répertoire ok » est imprimé à l'écran après la foo (calcDirs) est exécuté. Si je commente la ligne folderSelection.menu(dirs) le texte est imprimé à l'écran comme il le ferait normalement. Des idées? Je utilisation python 2.5

calc.py:

import folderSelection
[...]
calcDirs=folderSelection.menu(dirs)
print "Directory list ok"
foo(calcDirs)

folderSelection.py:

import curses
def menu(folders):
    global scr
    scr = curses.initscr()
    curses.noecho()      # Do not echo keypresses
    curses.cbreak()      # No enter required
    scr.keypad(1)   # Support keypad
    curses.curs_set(0)   # Do not show the cursor

    # Do some calculations
    [...]

    exitCurses()
    return calcDirs

def exitCurses():
    global scr
    curses.nocbreak()
    curses.curs_set(1)
    scr.keypad(0)
    curses.echo()
    curses.endwin()

Modifier Il semble que le texte est retardé nécessairement jusqu'à ce que se termine le programme. Il peut juste être retardé quelques secondes 30-40.

Était-ce utile?

La solution

je suis tombé sur un problème similaire. Il semble que malédictions fait quelque chose à la mise en mémoire tampon de sortie sur la sortie standard. Je pense qu'il est de plus en plus la taille de la mémoire tampon de sortie, ou le réglage du mode de sortie en mémoire tampon.

réouverture sortie standard avec une taille de tampon de zéro peut le fixer.

sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)

Essayez que après le retour des malédictions, mais avant d'imprimer quoi que ce soit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top