2012-01-19 20 views
5

ho bisogno di scrivereCome scrivere interi in un file

ranks[a], ranks[b], count 

in un file, di volta in volta su una nuova linea

sto usando:

file = open("matrix.txt", "w") 
for (a, b), count in counts.iteritems(): 
    file.write(ranks[a], ranks[b], count) 

file.close() 

ma questo non è lavoro e resi

TypeError: function takes exactly 1 argument (3 given) 
+0

L'output viene interpretato come 3 argomenti per la funzione di scrittura, che come mostrato nell'errore, può accettare solo 1 argomento. Vorresti concatenare gli argomenti in una variabile e poi passare quella variabile alla funzione di scrittura. – RobB

risposta

15

Come dice l'errore, file.write accetta solo un arg. Prova:

file.write("%s %s %s" % (ranks[a], ranks[b], count)) 
+8

Più probabile '% d'. E non dimenticare anche '\ n''. – Joe

+0

grazie! dove inserisco '\ n'? – Julia

+2

qui 'file.write ("% d% d% d \ n" % (ranghi [a], si colloca [b], conta))' – aayoubi

-1

La risposta di Hamish è corretta. Ma quando starai leggendo i contenuti, li leggeresti come strings e non come integers. Quindi, se vuoi rileggerli come interi o come qualsiasi altro dataType, ti suggerisco di usare una specie di object serialization come pickle.
Per i dati pickle -ing, è necessario leggere this page nella documentazione ufficiale. Per la vostra convenienza, sto incollando un frammento da here:

# Save a dictionary into a pickle file. 
import pickle 
favorite_color = { "lion": "yellow", "kitty": "red" } 
pickle.dump(favorite_color, open("save.p", "wb")) 


# Load the dictionary back from the pickle file. 
import pickle 
favorite_color = pickle.load(open("save.p", "rb")) 
# favorite_color is now { "lion": "yellow", "kitty": "red" } 
-1

Suona come si desidera una variazione sulla dichiarazione print.

Python 2.x:

print >> file, ranks[a], ranks[b], count 

Python 3.x:

print(ranks[a], ranks[b], count, file=file) 

Il vantaggio del print economico sulla base della soluzione di file.write sopra proposta è che non devi preoccuparti di quelle fastidiose novità.