J'essaye de joindre every_line dans un fichier txt avec un texte d'en-tête. Mais après avoir rejoint avec succès les lignes. Je n'arrive pas à écrire correctement le fichier car il n'écrira que la dernière ligne jointe dans le internallinks.txt. Comment puis-je faire en sorte qu'il écrive toute la sortie de combined dans le fichier?

Toute aide serait appréciée, merci beaucoup!

Code Python

with open(r"C:\Users\xingj\Desktop\writing.txt") as f:
    internallink = ("www.icom.org.cn")
    for every_line in f:
        combined = (internallink + every_line.strip())
        out_str = "".join(combined)


with open("C:\\Users\\xingj\\internallinks.txt",'w') as b:
    b.write(out_str)

Contenu de writing.txt

/icom/faculty/viewer/?id=1122
/icom/faculty/viewer/?id=1125
/icom/faculty/viewer/?id=586&
/icom/faculty/viewer/?id=1126
/icom/faculty/viewer/?id=470&

Sortie de internallinks.txt

www.icom.org.cn/icom/faculty/viewer/?id=470&

Sortie de la commande print (combined) avant la fermeture de with

PS C:\Users\xingj> & python c:/Users/xingj/testingagain.py
www.icom.org.cn/icom/faculty/viewer/?id=1122
www.icom.org.cn/icom/faculty/viewer/?id=1125
www.icom.org.cn/icom/faculty/viewer/?id=586&
www.icom.org.cn/icom/faculty/viewer/?id=1126
www.icom.org.cn/icom/faculty/viewer/?id=470&
PS C:\Users\xingj>
0
Just some sailboat 1 juin 2020 à 19:20

2 réponses

Dans la boucle while, vous réaffectez la variable out_str à la valeur actuelle de combined. Au lieu de cela, pour la sortie souhaitée, vous devez ajouter la nouvelle valeur, c'est-à-dire. combined à out_str. Remplacez simplement

for every_line in f:
    combined = (internallink + every_line.strip())
    out_str = "".join(combined)

Avec

for every_line in f:
    combined = (internallink + every_line.strip())
    out_str = out_str + combined

Et votre code devrait être correct.

1
Vipul Lohani 1 juin 2020 à 16:32

Vous affectez une nouvelle chaîne à la variable combinée, vous devez ajouter l'ancienne avec assignée combinée pour affecter toutes les chaînes

internallink = "www.icom.org.cn"
combined = ''
for every_line in tt:
    # If you don't want the text on newline you can remove `\n`
    combined = combined + internallink + every_line.strip() + '\n' 

print(combined)

Production:-

www.icom.org.cn/icom/faculty/viewer/?id=1122
www.icom.org.cn/icom/faculty/viewer/?id=1125
www.icom.org.cn/icom/faculty/viewer/?id=586
www.icom.org.cn/icom/faculty/viewer/?id=1126
www.icom.org.cn/icom/faculty/viewer/?id=470
1
Rajas Rasam 1 juin 2020 à 16:42