2010-08-02 25 views
6

Sono un principiante e ho appena iniziato a imparare Python paio di giorni fa (yay!)Lettura da file

quindi mi sono imbattuto in un problema. quando ho eseguito, questo codice genera tutto, ma il testo (txt in file è numeri 0-10 su linee separate)

def output(): 
    xf=open("data.txt", "r") 
    print xf 
    print("opened, printing now") 
    for line in xf: 
     print(xf.read()) 
     print("and\n") 
    xf.close() 
    print("closed, done printing") 

risposta

2

Questo dovrebbe stampare ogni numero su una riga, come si vuole, in un codice molto meno, e più leggibile.

def output(): 
    f = open('data.txt', 'r').read() 
    print f 
+0

grazie grazie – pjehyun

6

Non si utilizza line, provare:

with open('data.txt') as f: 
    for line in f: 
     print line 
1

quando si è utilizzato for line in xf: hai praticamente ripetuto il file, leggendo implicitamente ogni riga.

Tutto quello che dovete fare è stampare:

for line in xf: 
    print(line) 
0

Avete letto la riga di testo nella linea variabile nel codice for line in xf: quindi è necessario dimostrare che per esempio stampa (linea)

vorrei guardare tutorial come python.org uno

1

La ragione per cui non si è visto l'uscita di linea è perché non si è dicendogli di uscita della linea. Durante l'iterazione dei valori di line, si stampa xf.read(). Quanto segue è la tua funzione riscritta con questo in mente. Inoltre è aggiunto l'uso di un blocco with statment per chiudere automaticamente il file quando hai finito con esso.

(utilizzo xf.close() non è sbagliato, poco meno divinatorio per questo esempio.)

def output(): 
    with open("data.txt", "r") as xf: 
     print xf 
     print("opened, printing now") 
     for line in xf: 
      print(line) 
      print("and\n") 
    print("closed, done printing")