2017-01-31 2 views
2

Ich habe eine einfache Methode für die ich folgendes zu tun:Schreiben weg Parameter Textdatei

  • Öffnen Sie eine TXT-Datei
  • Text in eine neue Zeile in die Datei hinzufügen

Deshalb habe ich die folgenden:

import pandas as pd 
import os 
path = '/test' 
os.chdir(path) 

def writeScores(test): 
with open('output.txt', 'w') as f: 
    var = "\n", test, "\n" 
    f.write(var) 

das gibt mir jedoch den folgenden Fehler. Irgendwelche Gedanken, wo ich falsch liege?

TypeError: expected a character buffer object 
+0

was ist der Datentyp-Test in Ihrem Code beantwortet? n wie rufst du deine Funktion an? –

Antwort

0

Ich gehe davon aus Sie die Zeichenfolge concatinate wollen, so benutzen + statt ,

import pandas as pd 
import os 
#path = '/test' 
#os.chdir(path) 

def writeScores(test): 
with open('output.txt', 'w') as f: 
    var = "\n" + test + "\n" 
    f.write(var) 

writeScores("asd") 
2

Sie versuchen, eine tuple in Ihre Datei zu schreiben.

Während es für print arbeiten würde seit print weiß, wie mehrere Argumente zu drucken, write ist strenger.

Formatieren Sie einfach Ihre var richtig.

var = "\n{}\n".format(test) 
2

Sie diesen Fehler haben, weil Ihr erstes Argument nicht String ist, sollten Sie es eine Zeichenfolge übergeben, können Sie mit diesem einfachen Skript und auch können Sie „rw“ auf „w +“ oder Verwendung ändern ‚a +‘ zum Anhängen (nicht das Löschen bestehender Inhalte)

import os 

writepath = 'some/path/to/file.txt' 

mode = 'a' if os.path.exists(writepath) else 'w' 
with open(writepath, mode) as f: 
    f.write('Freeman Was Here!\n') 
0

Statt Zeichenfolge ein Tupel hier mit kommagetrennten Werten wie

var = "\n" + test + "\n" 

erstellt haben Sie können also nicht, dass Tupel schreiben Sie direkt auf die file.so Put-Werte innerhalb dieses Tupel in einen String wie lässt:

with open('output.txt', 'w') as fp: 
    var = "\n", test, "\n" 
    fp.write(''.join('%s' % x for x in var)) 

und die viel besseren Weg durch @ Jean-François Fabre