2016-08-08 22 views
1

Neu bei Python (sollte beachtet werden). Sei nicht zu streng mit mir.Druckanweisung in neue Datei speichern

Ich habe das einen ganz bestimmten Teil einer Datei

als solche

PLY/1,48.107478621032,-69.733975000000 

PLY/2,48.163516399836,-70.032838888053 

PLY/3,48.270000002883,-70.032838888053 

PLY/4,48.270000002883,-69.712824977522 

PLY/5,48.192379262383,-69.711801581207 

PLY/6,48.191666671083,-69.532840015422 

PLY/7,48.033358898628,-69.532840015422 

PLY/8,48.033359033880,-69.733975000000 

PLY/9,48.107478621032,-69.733975000000  

for line in open('120301.KAP'): 
    rec = line.strip() 
    if rec.startswith('PLY'): 
     print line 

erscheint die Ausgabe Idealer zu isolieren folgenden geschrieben, was ich hoffe, für die Ausgabe eines CSV- Datei mit den Koordinaten. (Die PLY/1, PLY/2 etc. müssen nicht bleiben). Ist das machbar? Wenn nicht, kann die print-Anweisung dann zu einer neuen Textdatei mit dem gleichen Namen wie die KAP-Datei führen?

+1

Mögliche Duplikate von [Wie 'Print' Ausgabe in eine Datei mit Python umleiten?] (http://stackoverflow.com/que stations/7152762/how-to-redirect-print-output-to-a-file-using-python) –

+0

Es ist ganz anders, lesen Sie meine Frage in ihrer Gesamtheit – dpalm

Antwort

1

können Sie csv-Modul

import csv 

with open('120301.csv', 'w', newline='') as file: 
    writer = csv.writer(file) 
    for line in open('120301.KAP'): 
     rec = line.strip() 
     if rec.startswith('PLY'): 
      writer.writerow(rec.split(',')) 

In ähnlicher Weise csv.reader können Datensätze leicht lesen aus Ihrer Eingabedatei verwenden. https://docs.python.org/3/library/csv.html?highlight=csv#module-contents

bearbeiten # 1

In Python 2.x sollten Sie die Datei in Binär-Modus öffnen:

import csv 

with open('120301.csv', 'wb') as file: 
    writer = csv.writer(file) 
    for line in open('120301.KAP'): 
     rec = line.strip() 
     if rec.startswith('PLY'): 
      writer.writerow(rec.split(',')) 
+0

TypeError: 'Newline' ist ein ungültiges Schlüsselwort Argument für diese Funktion – dpalm

+0

Es ist der Unterschied zwischen Python 2.x und 3.x, siehe Bearbeiten # 1 – warownia1

1

Das ist völlig machbar! Hier sind einige Links zu einigen Dokumenten: https://docs.python.org/2/library/csv.html # zum Schreiben/Lesen von CSV. Sie könnten auch Ihre eigenen CSV mit den regulären Datei lesen/schreiben Funktionen erstellen.

file = open('data', rw) 
output = open('output.csv', w) 
file.write('your infos') #add a comma to each string you output? 

ich denke, das sollte funktionieren.

1

Sie können die Datei am Anfang Ihres Codes öffnen und dann einfach eine Schreibanweisung nach der Druckzeile hinzufügen. Etwas wie folgt aus:

target = open(filename, 'w') 
for line in open('120301.KAP'): 
rec = line.strip() 
if rec.startswith('PLY'): 
    print line 
    target.write(line) 
    target.write("\n") #writes a new line 
+0

Dies scheint nicht zu funktionieren? Nicht sicher, welcher Dateiname definiert werden soll? – dpalm

+0

Dateiname hier ist eine Variable (string), Sie sollten einfach den Namen der Datei übergeben, die Sie öffnen möchten, z. B. "file.csv" –

0

Der einfachste Weg ist stdout in eine Datei zu umleiten:

for i in range(10): 
    print str(i) + "," + str(i*2) 

AUSGABE:

0,0 
1,2 
2,4 
3,6 
4,8 
5,10 
6,12 
7,14 
8,16 
9,18 

wenn Sie es als python myprog.py > myout.txt das Ergebnis laufen gehen myout .txt