Es gibt eine große Datei mit festem Format, Datei1. Eine weitere CSV-Datei, Datei2 hat IDs und Werte, mit denen bestimmte Teile eines Datensatzes mit derselben ID in Datei1 aktualisiert werden müssen. Hier ist mein Versuch. Ich freue mich über jede Hilfe, die Sie anbieten können, damit dies funktioniert.Datensätze in Datei2 mit Daten in Datei1 aktualisieren
file2 Komma getrennt
clr,code,type
Red,1001,1
Red,2001,2
Red,3001,3
blu,1002,1
blu,2002,2
blu,3002,3
file1 (feste Breite-Format)
clrtyp1typ2typ3notes
red110121013101helloworld
blu110221023102helloworld2
die file1 müssen folgende
clrtyp1typ2typ3notes
red100120013001helloworld
blu100220023002helloworld2
aktualisiert werden, bitte beachten Sie, dass sowohl die Dateien ziemlich große Dateien (jeweils mehrere GB). Ich bin Python Noob, bitte entschuldigen Sie grobe Fehler. Ich würde wirklich jede Hilfe schätzen, die Sie anbieten könnten.
import shutil
#read both input files
file1=open("file1.txt",'r').read()
file2='file2.txt'
#make a copy of the input file to make edits to it.
file2Edit=file2+'.EDIT'
shutil.copy(file2, baseEdit)
baseEditFile = open(baseEdit,'w').read()
#go thru eachline, pick clr from file1 and look for it in file2, if found, form a string to be replaced and replace the original line.
with open('file2.txt','w') as f:
for line in f:
base_clr = line[:3]
findindex = file1.find(base_recid)
if findindex != -1:
for line2 in file1:
#print(line)
clr = line2.split(",")[0]
code = line2.split(",")[1]
type = line2.split(",")[2]
if keytype = 1:
finalline=line[:15]+string.rjust(keyid, 15)+line[30:]
baseEditFile.write(replace(line,finalline)
baseEditFile.replace(line,finalline)
Was funktioniert im Moment nicht? Funktioniert es aber langsam? –
@SimonFraser Das Skript ist nicht vollständig. Ich stecke im Wesentlichen fest und konnte mich im letzten Stück nicht vorwärts bewegen. – sch