J'ai un dictionnaire comme celui-ci,
for sam in sample1.keys():
doc = sam + '.doc'
doc = open(doc, 'w')
doc.write("A: [\n")
Et maintenant, j'ai besoin d'écrire des clés dans sample1 ci-dessus en tant que fichier doc et c'est ce que j'ai essayé.
print(sample_dict)
dict_items([('SAP', ['SAP_MM_1.gz', 'SAP_MM_2.gz']), ('LUF',['LUF_1.gz', 'LUF_2.gz'])])
sample1 = {x:[sample_dict[x][0]] for x in sample_dict}
print(sample1)
dict_items {'SAP': ['SAP_MM_1.gz'],
'LUF': ['LUF_1.gz']}
Maintenant, il a créé deux fichiers pour SAP et LUF , mais seul SAP est écrit et l'autre fichier est vide. La boucle For évite en quelque sorte d'écrire la dernière clé dans sample1 . Je ne comprends pas ce qui ne va pas ici. Toutes suggestions seraient appréciées.
Merci
3 Réponses :
Je pense que cela pourrait être un cas où Python ne vide pas le flux. Vous devriez probablement fermer le fichier après l'écriture (ou mieux encore, utiliser le gestionnaire de contexte):
with open(doc, 'w') as my_file:
my_file.write('whatever')
Vous ne fermez pas le fichier après y avoir écrit. Vous pouvez le fermer explicitement, mais il est plus simple d'utiliser simplement avec car cela fermera le fichier même si le code échoue.
for sam in sample1.keys():
doc = sam + '.doc'
with output as open(doc, 'w'):
output.write("A: [\n")
Vous devez ouvrir deux fichiers séparés avant d'y écrire. Mon approche serait quelque chose comme ci-dessous:
for sam in sample1.keys():
with open(sam + '.doc', 'w') as sam_doc:
sam_doc.write("A: [\n")
Explication
L'ouverture d'un fichier à l'aide de l'instruction with ferme le fichier automatiquement après la mise à jour.
Merci, mais j'ai une grande liste de fichiers, donc je pense qu'il vaut mieux utiliser le avec avec une boucle for
Modification de la réponse, selon vos besoins
Publier
sample_dict