将print语句保存到新文件

时间:2016-08-08 15:00:22

标签: python writing

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等不需要留下)。这可行吗?如果没有,至少可以在print语句中生成一个与KAP文件同名的新文本文件吗?

4 个答案:

答案 0 :(得分: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

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

答案 1 :(得分: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?

我认为这应该有用。

答案 2 :(得分:1)

您可以在代码的开头打开文件,然后在打印行之后添加一个write语句。像这样:

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

答案 3 :(得分:0)

最简单的方法是将stdout重定向到文件:

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