La fonction d'écriture suite à stdin
Je suis en train d'écrire les résultats d'une fonction de stdin.
C'est le code :
def testy():
return 'Testy !'
import sys
sys.stdin.write(testy())
Et l'erreur que j'obtiens est :
Traceback (most recent call last):
File "stdin_test2.py", line 7, in <module>
sys.stdin.write(testy())
io.UnsupportedOperation: not writable
Je ne suis pas complètement sûr, est-ce la bonne manière de faire les choses ?
Quelles sont les choses que vous essayez de faire?
Oui, je sais. Ce que je veux faire est de simuler des frappes à l'entrée() la méthode de l'écriture dans stdin.
Ce serait bien d'avoir un certain contexte: Pourquoi voulez-vous imiter frappes dans
Parce que j'ai un programme qui était à l'origine dans un shell et maintenant, c'est à l'aide d'une interface graphique. Ce que je veux faire est de convertir cliquez sur les événements dans une chaîne de caractères (fait) et le tuyau le résultat de la méthode input ().
Là où auparavant, je voudrais demander à l'utilisateur d'écrire 1, 2, ou 3 pour sélectionner les options que je connais ont trois endroits sur l'interface graphique où l'utilisateur peut cliquer sur. La manifestation.x et de l'événement.y sont ensuite convertis en une chaîne de caractères spéciaux et les canalisations d'entrée().
stdin
est pour la lecture de l'entrée, il est ouvert en lecture seule.Oui, je sais. Ce que je veux faire est de simuler des frappes à l'entrée() la méthode de l'écriture dans stdin.
Ce serait bien d'avoir un certain contexte: Pourquoi voulez-vous imiter frappes dans
input()
?Parce que j'ai un programme qui était à l'origine dans un shell et maintenant, c'est à l'aide d'une interface graphique. Ce que je veux faire est de convertir cliquez sur les événements dans une chaîne de caractères (fait) et le tuyau le résultat de la méthode input ().
Là où auparavant, je voudrais demander à l'utilisateur d'écrire 1, 2, ou 3 pour sélectionner les options que je connais ont trois endroits sur l'interface graphique où l'utilisateur peut cliquer sur. La manifestation.x et de l'événement.y sont ensuite convertis en une chaîne de caractères spéciaux et les canalisations d'entrée().
OriginalL'auteur m_vdbeek | 2013-02-24
Vous devez vous connecter pour publier un commentaire.
Vous pourrait se moquer de
stdin
avec un fichier comme objet?OriginalL'auteur Pavel Anossov
stdin
est un flux d'entrée, pas un flux de sortie. Vous ne pouvez pas écrire.Ce que vous pourriez être en mesure de le faire, éventuellement, c'est de créer un tuyau à l'aide de
os.pipe
, tournez le lisible à la fin dans un fichier objet à l'aide deos.fdopen
, et remplacer l'entrée standard avec ça, et puis écrire à l'écriture de la fin.Je ne peux pas voir que la fin de l', bien que. Il sera plus facile et moins sujettes à l'erreur à seulement réécrire les parties de votre application à l'aide de
input
.OriginalL'auteur Cairnarvon
J'ai été googler comment le faire moi-même et compris. Pour ma situation, j'ai été prendre quelques échantillons d'entrée de hackerrank.com et le mettre dans un fichier, puis il a voulu être en mesure d'utiliser ce fichier pour que mes STDIN, de sorte que je pourrais écrire une solution qui pourrait être facilement copier/collé dans leur IDE. J'ai fait mes 2 fichiers python exécutable, a ajouté le shebang. Le premier lit mon fichier et écrit sur la sortie standard STDOUT.
Le deuxième fichier est le code que j'ai écris pour résoudre un défi en termes de programmation. C'était la mienne:
Puis-je utiliser le système d'exploitation de tuyau de commande de fournir la mise en mémoire tampon de l'entrée standard. Fonctionne exactement comme hackerrank.com, donc je peux facilement couper/coller l'exemple de l'entrée et aussi mon code correspondant sans rien changer. L'appeler comme ceci:
./my_input.py | ./zip_stuff.py
OriginalL'auteur Ryan Dines