Python 从两个不同的txt文件中读取同一行

Python 从两个不同的txt文件中读取同一行,python,numpy,dictionary,readline,Python,Numpy,Dictionary,Readline,我有两个不同的txt文件中的数据,我需要这两个文件中的数据(数据文件只有630行长,但我更愿意找到一种方法来读取同一行,而不仅仅是将适当的列复制并粘贴到一个文件中)。这两个文件的行数相同,顺序相同 以下是我目前正在尝试使用的代码: import numpy as np class Source: def __init__(self, ra, dec, dist, knAPPMag, SGRB, incl, fif_area): self.ra = ra s

我有两个不同的txt文件中的数据,我需要这两个文件中的数据(数据文件只有630行长,但我更愿意找到一种方法来读取同一行,而不仅仅是将适当的列复制并粘贴到一个文件中)。这两个文件的行数相同,顺序相同

以下是我目前正在尝试使用的代码:

import numpy as np
class Source:
    def __init__(self, ra, dec, dist, knAPPMag, SGRB, incl, fif_area):
        self.ra = ra
        self.dec = dec
        self.dist = dist
        self.knAPPMag = knAPPMag
        self.SGRB = SGRB
        self.incl = incl
        self.fif_area = fif_area
def read_dat(data, data2):
    sources = {}
    count = 0
    for line in data:
        if line.startswith('#'):
            continue
        cols = line.split()
        ra = float(cols[3])
        dec = float(cols[4])
        dist = (float(cols[8]))*10e6
        incl = float(cols[5])
        for line2 in data2:
            if line2.startswith('#'):
                continue
            if line == line2:
                cols2 = line2.split()
                fif_area = float(cols2[8])

                knABMag = np.random.uniform(-13, -16)
                knAPPMag = 5*((np.log10(dist)) - 1 ) + knABMag

                SGRB_iso = np.random.uniform(1e+49, 1e+53) 
                dist_m = dist*3.08567758e+16 
                SGRB = SGRB_iso/(dist_m**2)

                name = 'src%05d' % count
                sources[name] = Source(ra, dec, dist, knAPPMag, SGRB, incl, fif_area)
                count=count+1



    return (sources)
我想创建一个包含这两个条目的字典,但是当我尝试时,我得到一个空字典(使用上面的代码) 我尝试过的其他事情有: 1) 只需在line循环之外运行line2循环,这会给我留下630个几乎空白的字典,2)去掉line2==line循环,我将返回396900个字典条目

我猜这个问题的解决方案并不太复杂,我只是对python相当陌生 干杯
杰克

我可能会这样做:

from itertools import izip_longest as izipl

def read_pair(fna, fnb):
    lines = {}
    with open(fna, 'r') as fa:
        with open(fnb, 'r') as fb:
            for (i,(la,lb)) in enumerate(izipl(fa, fb)):
                lines[i] = [la, lb]
    return lines

lines = read_pair('file_a.txt', 'file_b.txt')

将是一个具有与行号对应的整数索引的字典。字典的值将是两个元素的列表,第一个元素是来自文件\u a.txt的行,第二个元素是来自文件\u b.txt的行。

您有问题和逻辑问题。问题在于,您提供的代码与您的问题无关。逻辑问题是,如果
line==line2
,那么
line2
将不会有不在
line
中的列。顺便说一句,你可能想看看
np.loadtxt
。谢谢你的快速回复!我已经修好了,但可能还需要很长时间。只需创建一个单独的函数来读取该列并用另一个脚本将其添加到字典中