From 67722f4d2cd0b3d4d2e19ada1c69595db6be0a71 Mon Sep 17 00:00:00 2001
From: Yngve Levinsen <yngve.levinsen@esss.se>
Date: Tue, 28 Aug 2018 14:13:23 +0200
Subject: [PATCH] make file write working in python3

---
 ess/lib_tw.py | 40 +++++++++++++++++++++++-----------------
 1 file changed, 23 insertions(+), 17 deletions(-)

diff --git a/ess/lib_tw.py b/ess/lib_tw.py
index 660d2ad..5fa7664 100644
--- a/ess/lib_tw.py
+++ b/ess/lib_tw.py
@@ -312,31 +312,37 @@ class LATTICE:
 
         if self.lst[-1].gamma==1.0: self.update_gamma()  # Assign gamma, if not done yet
 
-        with open(file_name_elem,'w') as file:
+        with open(file_name_elem,'w') as fname:
             for lat_i in self.lst:
-                try   : print >>file,lat_i.get_madx()
-                except: pass
+                try:
+                    fname.write(lat_i.get_madx()+'\n')
+                except AttributeError:
+                    pass
 
-        with open(file_name_elem,'r') as file: lst_name=[lin.split(':')[0] for lin in file]
-        with open(file_name_seq ,'w') as file: print >>file,'linac:line=('+','.join(lst_name)+');'
+        with open(file_name_elem,'r') as fname: lst_name=[lin.split(':')[0] for lin in fname]
+        with open(file_name_seq ,'w') as fname: fname.write('linac:line=({});\n'.format(','.join(lst_name)))
 
     def get_fluka(self,file_name='elem.dat'):
 
         if self.lst[-1].gamma==1.0: self.update_gamma()  # Assign gamma, if not done yet
 
-        with open(file_name,'w') as file:
+        with open(file_name,'w') as fname:
             for lat_i in self.lst:
-                try   : print >>file,lat_i.get_fluka()
-                except: pass
+                try:
+                    fname.write(lat_i.get_fluka()+'\n')
+                except AttributeError:
+                    pass
 
     def get_mars(self,file_name='elem.dat'):
 
         if self.lst[-1].gamma==1.0: self.update_gamma()  # Assign gamma, if not done yet
 
-        with open(file_name,'w') as file:
+        with open(file_name,'w') as fname:
             for lat_i in self.lst:
-                try   : print >>file,lat_i.get_mars()
-                except: pass
+                try:
+                    fname.write(lat_i.get_mars()+'\n')
+                except AttributeError:
+                    pass
 
 class PROJECT:
     '''
@@ -720,7 +726,7 @@ def x2dst(x,mass,freq,Ibeam,path_file='part_dtl1_new.dst'):
         2014.10.03
     '''
 
-    file=open(path_file,'w')
+    fname=open(path_file,'w')
     out =pack('b',125)
     out+=pack('b',100)
     out+=pack('i',len(x))
@@ -730,8 +736,8 @@ def x2dst(x,mass,freq,Ibeam,path_file='part_dtl1_new.dst'):
     x=list(chain(*x))   # Flatten x
     for x_i in x: out+=pack('d',x_i)
     out+=pack('d',mass)
-    print >>file,out
-    file.close()
+    fname.write(out+'\n')
+    fname.close()
 
 def plt2x(path_file):
     '''
@@ -783,7 +789,7 @@ def x2plt(x,mass,freq,Ibeam,i_unk,i_elem,s,phs,ken,path_file='dtl1_new.plt'):
         2014.10.07
     '''
 
-    file=open(path_file,'w')
+    fname=open(path_file,'w')
     out =pack('b',125)
     out+=pack('b',100)
     out+=pack('i',len(x))
@@ -800,8 +806,8 @@ def x2plt(x,mass,freq,Ibeam,i_unk,i_elem,s,phs,ken,path_file='dtl1_new.plt'):
         out+=pack('d',ken[i])
         x_i=list(chain(*x[i]))
         for x_ik in x_i: out+=pack('f',x_ik)
-    print >>file,out
-    file.close()
+    fname.write(out+'\n')
+    fname.close()
 
 #---- Data related
 
-- 
GitLab