Indeed it looks ok after reading it in - here is the output of the code
    auto sites = Exciton(N,{"on_site_dim", dim});
    Print(sites);
    readFromFile(format("sites_file_NB_%d",N),sites);
    Print(sites);
sites = 
SiteSet:
site 1 = (21|id=524|n=1,Site,Exciton)
site 2 = (21|id=576|n=2,Site,Exciton)
site 3 = (21|id=420|n=3,Site,Exciton)
sites = 
SiteSet:
site 1 = (21|id=787|n=1,Site,Exciton)
site 2 = (21|id=131|n=2,Site,Exciton)
site 3 = (21|id=147|n=3,Site,Exciton)
And yes, it is the toMPO line that is the last line run.