同时文件读取

时间:2015-03-27 19:40:00

标签: python csv

我想在python中做一些基本的数学运算。我有2个csv文件,每个文件都有一些垃圾数据和一些数字数据。我已经创建了一个porgram来从csv文件中删除有用的数值数据并打印出来。

现在我需要我的代码同时访问2个csv文件,每个文件抓取1个数据,然后将其剥离为数字数据,然后将其设置为变量,以便我可以继续进行数学然后最后将数学问题的答案写入第3档。

以下是文件 shoud 的外观

while true:
    read file a - set data as int(a1)
    read file b - set data as int(b1)
    if a2 == 0 or b2 == 0:
         break
    else
    a2 - a1 = a3
    b2 - b1 = b3
    a2 / 100 = a4
    b2 / 100 = b4
    a3 / av = a5
    b3 / av = b5
    time.sellp(1)
    a1 = a2
    b1 = b2
    write file c- a5, b5

所以基本上我尝试在两组数据之间进行%更改并在同一文件中并排编写它们。我可以手动执行此操作,但这是为了工作,需要动态发生,并且有超过10k行的数据。

到目前为止,我有以下代码从1个文件中删除数据并将其打印在控制台中。

import sys
import time
from sys import argv
argv1 = "Ard.csv"
script, filename = argv, argv1
a = open(filename, 'r')

while True:
    for i, linea in enumerate(a):
        abc1a =  (linea)[36:-10:]
        abc2a = float(abc1a)
        abc3a = int(abc2a)
        Ard = abc3a
        print (Ard)
        time.sleep(5)

我大部分都可以自己弄明白,特别是数学部分。我只需要帮助同时读取2个文件,这样我就可以比较数据。这对我的工作非常重要,我在周末做这个,所以请帮忙。

感谢。

编辑:供其他人参考的工作代码 - http://pastebin.com/H25XEXuu

2 个答案:

答案 0 :(得分:2)

类似的东西:

import itertools

with open('fileA.csv') as fa:
    with open('fileB.csv') as fb:
        for (i, (la, lb)) in enumerate(itertools.izip_longest(fa, fb)):
            print(i, la, lb)

应该工作。

在内循环的每次迭代中,i是行号(0索引),la是来自fa的行,lb是来自fb的行la。如果一个文件比另一个文件长,则lbNone将为{{1}}。

答案 1 :(得分:-1)

使用名为" itertools.izip"的模块迭代两次迭代。

from itertools import izip
file1 = open("/var/tmp/a.txt")
file2 = open("/var/tmp/b.txt")
for line_a, line_b in izip(file1, file2):
    print "%s\t%s" % (line_a.rstrip(), line_b.rstrip())