J'essaie d'exporter certaines données, extraites d'une base de données SQL, vers un fichier txt ou csv. La déclaration imprimée:

for x in range(len(data)):
        print(data[x]) 

Cela donne ce que je veux, chaque élément d'une nouvelle ligne

(1, 90, Netherlands, male)
(2,  50, Germany, Female)

Etc .. Maintenant, quand j'essaie de mettre cela dans un fichier texte, il ajoute simplement tout en 1 longue ligne, toutes les informations collées les unes derrière les autres, tout comme une commande print(data) ordinaire.

J'ai posté mon code ci-dessous pour que vous obteniez le contexte

sql = 'SELECT * FROM batch'
c.execute(sql)
data = c.fetchall()
list1 = []
addDataToList = list1.append(data)
for x in range(len(data)):
    print(data[x])

    with open('Rapport.txt', mode="w") as output:
    for x in range(len(data)):
        output.write("\n" .join(str(data[x])))
1
DevOps 16 avril 2018 à 14:52

3 réponses

Meilleure réponse

Chaque élément sur une nouvelle ligne

Alors essayez ceci

sql = 'SELECT * FROM batch'
c.execute(sql)
data = c.fetchall()
list1 = []
addDataToList = list1.append(data)
# construct output
outputString = ''
for x in range(len(data)):
   outputString = outputString + str(data[x]) + '\n'
# write output to file
with open('Rapport.txt', mode="w") as output:
   output.write(outputString)

Soit dit en passant, vous écrivez dans le même fichier x^2 plusieurs fois, seule la dernière écriture étant visible pendant que vous écrasez la dernière écriture. Vous devez être prudent avec les instructions for imbriquées. Voir l'exemple ci-dessous:

data = ['1', '90', 'Netherlands', 'male']
result = ''
for x in range(len(data)):
    print(data[x])

    #with open('Rapport.txt', mode="w") as output:
    for x in range(len(data)):
        #output.write("\n" .join(str(data[x])))
        result = result + (data[x] + ' ')

print (str(result))

Production:

1 90 Pays-Bas hommes 1 90 Pays-Bas hommes 1 90 Pays-Bas hommes 1 90 Pays-Bas hommes

1
ChickenFeet 17 avril 2018 à 01:27
sql = 'SELECT * FROM batch'
c.execute(sql)
data = c.fetchall()
list1 = []
addDataToList = list1.append(data)
for x in range(len(data)):
    print(data[x])

with open('Rapport.txt', mode="w") as output:
    for x in range(len(data)):
        print(str(data[x]), file=output) 
1
Stivan 16 avril 2018 à 12:01

Utilisez write avec \n pour écrire du contenu sur chaque ligne.

Ex:

with open('Rapport.txt', mode="w") as output:
    for i in data:
        output.write("{0} \n".format(str(i)))
1
Rakesh 16 avril 2018 à 12:02