La fonction Je souhaite écrire la sortie d'IS: La liste étant passée via display_pokemon est remplie par l'utilisateur précédemment comme display_pokemon puis imprime quelque chose comme: p> < BlockQuote>
Nom du Pokémon N ° 1: Pikachu P>
blockQuote> capacité de pokémon n ° 1: Thunderbolt P>
blockQuote> et cette sortie est ce que je veux collecter à partir de cette fonction pour écrire dans un fichier. p> essentiellement c'est comme si je veux que ma principale () ait l'air: p> < Pré> xxx pré> p>
4 Réponses :
Alors, ce que vous voulez faire est:
def display_pokemon(pokemon_list): file_name = input('"\nEnter the name of the file?: "') with open(file_name, 'w') as file: pokemon_count = 0 for x in pokemon_list: pokemon_count += 1 # Requirement 5 pokemon_name = "Name of Pokemon #{}: ".format(pokemon_count) + x.get_name() print(pokemon_name) file.write(pokemon_name + '\n') pokemon_ability = "Ability of Pokemon #{}: ".format(pokemon_count) + x.get_ability() print(pokemon_ability) file.write(pokemon_ability)
Le premier changement que vous feriez est à votre Ensuite, écrivez simplement à une destination de fichier: P> display_pokemon code>. Au lieu d'imprimer cette chaîne, vous pouvez l'ajouter à un tableau.
def main() :
pokemon_list = add_pokemon()
to_write = display_pokemon(pokemon_list)
file_name = r"some/file.py"
def save_file(file_name, to_write):
file = open(file_name, "w+")
for i in to_write:
file.write(i)
file.write("\n")
file.close()
save_file(file_name, to_write)
J'aurais dû mention que j'ai besoin de "l'écriture" pour être contenue dans la fonction de sauvegarde_data dans Main, c'est pourquoi je suis bloqué à ce mur en essayant de collecter les résultats imprimés de display_pokemon et de passer à l'écriture. Donc, je ne peux pas utiliser votre solution de tableau, désolé.
Votre fonction utilise actuellement Vous pouvez désormais appeler la fonction avant d'écrire à la sortie standard, ou transmettez un fichier différent: p> sys.stdout code> comme fichier de destination codé dur pour les appels sur
Imprimer code>. Rendre le fichier à utiliser un argument à la place; Vous pouvez toujours utiliser
sys.stdout code> comme défaut em>.
Vous pouvez utiliser le redirect_stdout code> Contexte Manager à partir de
contextLib code> pour rediriger temporairement le stdout temporairement
Par exemple, le code suivant rendrait la sortie de l'appel de fonction
display_pokemon () code> à un fichier nommé
file_name code>
Vous devez réorganiser votre code. Séparez-le dans des fonctions qui formatent des données et des fonctions qui écrivent des données. Ensuite, vous pouvez appeler la fonction de formatage et écrire son résultat au fichier.
Consultez cette question Stackoverflow.com/Questtions/34571390/... je pense que cela a ce dont vous avez besoin.
La raison pour laquelle vous rencontrez des difficultés est que ce n'est pas une "sortie" de la fonction, c'est quelque chose que votre fonction provoque l'affichage de
Imprimer code>. Pour récupérer des informations à partir d'une fonction, vous devez utiliser
retour code>.