Определение оператора if для чтения текстового файла для ограничения значений чтения - PullRequest
0 голосов
/ 24 января 2020

Я занимаюсь следующим делом, но я никогда не делал этого раньше, и теперь у меня много проблем, мне нужна ваша помощь. Извините, если у меня вопрос amateuri sh.

Я хочу прочитать два текстовых файла (3 столбца и 1000 строк) и разделить значения столбца I внутри обоих файлов на I1/I. Но если у нас есть определенные c значения n, t, n1, t1.

n, t, I = np.genfromtxt('C:/...nu/I1.txt',unpack=True)
n1, t1, I1 = np.genfromtxt('C:...nu/I2.txt',unpack=True)
with open('C:/Users/esadr21/Desktop/uf/newInu/Inu101rat.txt', 'w') as d:
    if 1e2<n<3e5 and 1e1<t<3e1 and 1e-2<n1<1e-5 and 1e1<t1<2e6:
            rat = I1/I
            d.write("{0}\n".format(rat))
    else: pass

, но этот способ не работает. Любая помощь, пожалуйста?

1 Ответ

1 голос
/ 24 января 2020

Не совсем ясно без фактических данных, но кажется, что n, t, I et c. предполагается, что это значения отдельных строк файла, но вы распаковываете список строк для этих трех переменных. Вместо этого вам, вероятно, следует zip данные из двух файлов, чтобы получить отдельные переменные для соответствующих строк:

# read data consisting of multiple lines each; note: no unpack
data1 = np.genfromtxt('C:/...nu/I1.txt')
data2 = np.genfromtxt('C:...nu/I2.txt')

# zip and unpack lines to variables
for (n, t, I), (n1, t1, I1) in zip(data1, data2):
    if 1e2<n< 3e5 and 1e1<t<3e1 and 1e-2<n1<1e-5 and 1e1<t1<2e6:
        rat = I1 / I
        ...

Или продолжать использовать unpack, а затем zip и итерировать отдельные столбцы (Примечание что я использую прописные переменные для столбцов и строчные для отдельных значений):

# read individual data columns
N, T, I = np.genfromtxt('C:/...nu/I1.txt', unpack=True)
N1, T1, I1 = np.genfromtxt('C:...nu/I2.txt', unpack=True)

# loop over zipped column to get individual variables
for n, t, i, n1, t1, i1 in zip(N, T, I, N1, T1, I1):
    if 1e2<n< 3e5 and 1e1<t<3e1 and 1e-2<n1<1e-5 and 1e1<t1<2e6:
        rat = i1 / i
        ...

(удалил выходной файл, чтобы сосредоточиться на реальной проблеме)

...