У меня есть следующий файл, которым я пытаюсь манипулировать.
1 2 -3 5 10 8.2
5 8 5 4 0 6
4 3 2 3 -2 15
-3 4 0 2 4 2.33
2 1 1 1 2.5 0
0 2 6 0 8 5
Файл просто содержит числа.
Я пытаюсь написать программу для вычитания строк из каждогодругой и распечатать результаты в файл.Моя программа ниже и dtest.txt
- это имя входного файла.Название программы: make_distance.py
.
from math import *
posnfile = open("dtest.txt","r")
posn = posnfile.readlines()
posnfile.close()
for i in range (len(posn)-1):
for j in range (0,1):
if (j == 0):
Xp = float(posn[i].split()[0])
Yp = float(posn[i].split()[1])
Zp = float(posn[i].split()[2])
Xc = float(posn[i+1].split()[0])
Yc = float(posn[i+1].split()[1])
Zc = float(posn[i+1].split()[2])
else:
Xp = float(posn[i].split()[3*j+1])
Yp = float(posn[i].split()[3*j+2])
Zp = float(posn[i].split()[3*j+3])
Xc = float(posn[i+1].split()[3*j+1])
Yc = float(posn[i+1].split()[3*j+2])
Zc = float(posn[i+1].split()[3*j+3])
Px = fabs(Xc-Xp)
Py = fabs(Yc-Yp)
Pz = fabs(Zc-Zp)
print Px,Py,Pz
Программа правильно вычисляет значения, но, когда я пытаюсь вызвать программу для записи выходного файла,
mpipython make_distance.py > distance.dat
Выходной файл (distance.dat
) содержит только 3 столбца, если он должен содержать 6. Как мне указать программе переключать столбцы для печати для каждого шага j = 0,1, ....
При j = 0 программа должна выводить в первые 3 столбца, при j = 1 программа должна выводить во вторые 3 столбца (3,4,5) и т. Д. И т. Д.
Наконец,Функция len
дает количество строк во входном файле, но какая функция дает количество столбцов в файле?
Спасибо.