2017-09-25 3 views
1

Je rencontre des problèmes avec la mise en forme des listes et des chaînes et l'écriture des modifications dans un nouveau fichier. Ce que je suis à la recherche est:Problèmes de mise en forme de liste et chaîne: importation d'un fichier txt, ajout de chaînes et écriture dans un nouveau fichier

  1. CORDES AVANT
  2. contenu du fichier txt importées (une liste des valeurs de chaîne)
  3. CORDES APRÈS

Lorsque les deux les CORDES précédents et suivants sont déjà défini, et tout est écrit dans un nouveau fichier!

Mon objectif final est que lorsque j'importe un fichier txt (contenant une liste) et exécute le code, il est ensuite imprimé dans un nouveau fichier avec des chaînes prédéfinies ajoutées avant et après la liste du fichier txt importé.

Mon code est en ce moment comme suit:

text_file = open(r"text_file path", "r") 
lines = text_file.read().split(',') 
lines.insert(0, "String Values Before") 
lines.insert("String Values After") 
text_file.close() 
lines.write("new_file.txt", "w+") 

Le problème est maintenant que je suis à la liste INSERTION DE, alors que je veux que les chaînes sont séparées à la liste!

Je suis en mesure de produire ce que je veux que le fichier écrit à ressembler à la console avec ce code ici:

FIRMNAME = "apple" 
FILETYPE = "apple" 
REPLYFILENAME = "apple" 
SECMASTER = "apple" 
PROGRAMNAME = "apple" 

text_file = open(r"textfile path", "r+") 
lines = text_file.readlines().split('\n') 

print(("START-OF-FILE \nFIRMNAME= ") + FIRMNAME) 

print(("FILETYPE= ") + FILETYPE) 

print(("REPLYFILENAME= ") + REPLYFILENAME) 

print(("SECMASTER= ") + SECMASTER) 

print(("PROGRAMNAME= ") + PROGRAMNAME) 


print("START-OF-FIELDS") 

print("END-OF-FIELDS") 

print("START-OF-DATA") 
pprint.pprint(lines) 
print("END-OF-DATA") 
print("END-OF-FILE") 

Je ne peux pas comprendre comment écrire à un nouveau fichier ! Aidez-moi!

+0

Utilisez le mode append et une nouvelle ligne –

+0

Que voulez-vous dire par là? Pourrais-tu me montrer? Merci! :) –

+1

'lines.write (" new_file.txt "," a ")' –

Répondre

2

Vous pouvez résoudre cette façon:

newFile = 'your_new_file.txt' 
oldFile = 'your_old_file.txt' 

# Open the new text file 
with open(newFile, 'w') as new_file: 
    # Open the old text file 
    with open(oldFile, 'r') as old_file: 
     # Write the line before the old content 
     new_file.write('Line before old content\n') 

     # Write old content 
     for line in old_file.readlines(): 
      new_file.write(line) 

     # Write line after old content 
     new_file.write('Line after old content') 
+1

merci mischi! ça a marché! :) –

1

votre variable lines est de type list, qui ne dispose pas d'une méthode write.
En outre insert nécessite une position, que votre deuxième appel est manquant.

Vous aurez besoin de lire le fichier, concat avec le préfixe et suffixe des valeurs en conséquence, puis l'écrire dans le fichier de sortie approprié:

with open("text_file_path", "r") as input_file: 
    text = input_file.read() 

text = '\n'.join(("String Values Before", text, "String Values After")) 

with open("new_file.txt", "w+") as output_file: 
    output_file.write(text) 
1

Utilisez pformat.
pprint

before_values = ["a", "b", "c"] 
data = ["1", "2", "3"] 
after_values = ["d", "e", "f"] 
with open("outfile.txt", "w) as outfile: 
    outfile.write("\n".join(before_values)) # Write before values 
    outfile.write(pprint.pformat(data))  # Write data list 
    outfile.write("\n".join(after_values)) # Write after values 
0

Vous avez une erreur que vous appelez à l'origine de la méthode insert que vous devez fournir un indice; Cependant, vous pouvez simplement ajouter, se joindre à la liste des résultats et écrire dans le fichier:

text_file = open(r"text_file path", "r") 
lines = text_file.read().split(',') 
lines.insert(0, "String Values Before") 
lines.append("String Values After") 
text_file.close() 
new_file = open('text_file_path.txt', 'w') 
new_file.write(','.join(lines)+'\n') 
new_file.close()