Автоматическое слияние строк в Python - PullRequest
0 голосов
/ 12 мая 2018

У меня есть новая строка из файла ("new.dat") для слияния с файлом ("old.dat").

File : "new.dat"
WBGG 120200Z VRB03KT 9000 FEW015 BKN160 28/25 Q1013 NOSIG

File : "old.dat"
WBGG 120130Z VRB02KT 9000 FEW015 BKN150 27/25 Q1013 NOSIG    
WBGG 120100Z VRB02KT 9999 FEW014 BKN150 26/25 Q1012 NOSIG

Ожидаемый вывод будет перезаписан и станет новым ("старым".dat ")

WBGG 120200Z VRB03KT 9000 FEW015 BKN160 28/25 Q1013 NOSIG
WBGG 120130Z VRB02KT 9000 FEW015 BKN150 27/25 Q1013 NOSIG    
WBGG 120100Z VRB02KT 9999 FEW014 BKN150 26/25 Q1012 NOSIG

Процесс будет продолжен, так как в системе появилась новая строка в" new.dat ".Результат текущего скрипта странный.У кого-нибудь есть идеи?

new=open("new.dat","r")
old=open("old.dat","r")

for line1 in new:
    data1=line1

for line2 in old:
    data2=line2   

newdata=np.array([data1,data2])

## overwrite file and become old file
newfile = open("old.dat", 'w')
newfile.write(newdata)
newfile.close() 

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Мы можем использовать append для записи новых данных в старый файл, так как новые данные становятся старыми данными для следующих входящих новых данных. Попробуйте изменить

newfile = open("old.dat", 'w')

Для

newfile = open("old.dat", 'a')
0 голосов
/ 12 мая 2018

Это то, что я имел в виду под «прилипанием к numpy»:

a = np.loadtxt('old.dat', dtype='object')
b = np.loadtxt('new.dat', dtype='object')

c = np.vstack((b,a))

np.savetxt('old.dat', c, delimiter=" ", fmt="%s")

Или вы могли бы использовать панд:

import pandas as pd

(pd.concat((pd.read_csv(i, sep=' ', header=None) for i in ('new.dat', 'old.dat')))
    .to_csv('old.dat', sep=' ', index=False, header=None))

Но я бы, вероятно, использовал для этого какой-нибудь сценарий оболочки.Например, Windows (введите это в терминал в папке)

(type old.dat new.dat) >> old.dat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...