| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

lbl-ensdf-fetcher.py

Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 '''
00003 This fetches ENSDF files from ie.lbl.gov for libmore.
00004 Set MORE_PHYS_FETCHER to point to this script.
00005 '''
00006 
00007 import sys, os
00008 try:
00009     nuc = sys.argv[1]
00010     target = sys.argv[2]
00011     #print 'target=',target
00012 except IndexError:
00013     print '''
00014 Usage: lbl-ensdf-fetcher.py local_file_path NUC
00015        NUC is [Abreviated name]-[mass number]
00016        If using with libmore, set MORE_PHYS_FETCHER to point to me
00017 '''
00018 
00019 override = os.getenv('MORE_ENSDF_DIR',None)
00020 if override:
00021     target = override
00022 
00023 #print 'nuc="%s", target="%s"'%(nuc,target)
00024 import os
00025 if os.path.exists(target):
00026     #print 'Using previously downloaded',target
00027     sys.exit(0)
00028 
00029 name,A = nuc.split('-')
00030 mlen=len(A)
00031 filename = '%(a)03d%(n)s.ens'%{'n':name,'a':int(A)}
00032 url = 'http://ie.lbl.gov/databases/data/%(a)03d/%(a)03d%(n)s/%(a)03d%(n)s.ens'%{'n':name,'a':int(A)}
00033 print url,'-->',target
00034 
00035 
00036 err_target = target + '/' + filename + '.HTTPError'
00037 print 'err_target =',err_target
00038 if os.path.exists(err_target):
00039     errfile = open(err_target,'r')
00040     print 'Previous download of',nuc,'failed with',errfile.readline()
00041     sys.exit(0)
00042 
00043 
00044 from urllib2 import urlopen, HTTPError
00045 try:
00046     response = urlopen(url)
00047 except HTTPError, err:
00048     err = str(err)
00049     print 'HTTPError: "%s"'%err
00050     errfile = open(err_target,'w')
00051     errfile.write(err)
00052     errfile.close()
00053     if '404' in err:
00054         sys.exit(0)
00055     sys.exit(1)
00056 
00057 data = []
00058 for line in response.readlines():
00059     data.append(line.strip())
00060 
00061 if '.bz2' in target:
00062     import bz2
00063     file = bz2.BZ2File(target,"w")
00064 else:
00065     file = open(target,"w")
00066 
00067 # Final file must have lines of 80 spaced padded characters and
00068 # terminated in DOS style.
00069 for line in data:
00070     line = (3-mlen)*' ' + line
00071     while (len(line) < 80):
00072         line += ' '
00073     file.write(line + '\r\n')
00074 
00075 file.close
00076 
00077 sys.exit(0)
00078 
00079 
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 21:01:08 2011 for GenDecay by doxygen 1.4.7