2016-08-08 80 views
1

python新增功能(應注意)。在我身上輕鬆一下。將打印語句保存到新文件中

我寫了下面的隔離文件

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

的輸出表現爲這樣

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  

的一個非常具體的部分理想的情況是什麼,我希望的是創造一個CSV輸出文件與座標。 (PLY/1,PLY/2等不需要停留)。這是可行的嗎?如果沒有,至少打印語句是否會生成一個與KAP文件同名的新文本文件?

+1

[如何重定向「打印」輸出到使用python文件?(可能的重複http://stackoverflow.com/que stions/7152762 /如何對重定向打印輸出到一個文件,使用的Python) –

+0

這是相當不同的,看我的問題的全部 – dpalm

回答

1

您可以使用CSV模塊

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(',')) 

在類似的方式csv.reader可以很容易地讀取輸入文件記錄。 https://docs.python.org/3/library/csv.html?highlight=csv#module-contents

編輯#1

在蟒蛇2.x的,你應該以二進制模式打開文件:

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

類型錯誤:「換行」是該功能 – dpalm

+0

一個無效的關鍵字參數這是Python 2.x和3.x之間的區別,請參閱編輯#1 – warownia1

1

這是完全可行的!以下是一些文檔的鏈接:https://docs.python.org/2/library/csv.html#用於編寫/閱讀CSV。 您也可以使用常規文件讀/寫功能製作自己的CSV文件。

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

我認爲應該工作。

1

你可以在你的代碼的開頭打開該文件,然後只打印行後添加寫語句。事情是這樣的:

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

這似乎不工作?不確定應該定義的文件名是什麼? – dpalm

+0

這裏的文件名是一個變量(字符串),你應該把它傳遞給你想打開的文件的名字,比如「file.csv」 –

0

最簡單的方法是將標準輸出重定向到一個文件:

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

將輸出:

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

,如果你運行它python myprog.py > myout.txt結果去myout中.TXT