Python Skript anpassen
Hallo zusammen,
ich habe vor Jahren ein Skript erhalten, das über die Jahre hinweg einwandfrei funktioniert. Nun mit einer neueren Version
der Software werden nun *.mdl , *.mdl.0 , *.mdl.1 und so weiter rausgeschrieben. Das gleiche gilt für *.stt Dateien, die ebenfalls *.stt.0 usw rausgeschrieben werden. Habe es schon mit regulären Ausdrücken probiert, komme hier allerdings nicht weiter. Habt Ihr mir einen Tipp wie ich das umgesetzt bekomme?
Das derzeitige Skript schaut wie folgt aus.
Für Testzwecke habe ich es mal so angepasst.
Schon mal vielen Dank für die Hinweise.
ms1982
ich habe vor Jahren ein Skript erhalten, das über die Jahre hinweg einwandfrei funktioniert. Nun mit einer neueren Version
der Software werden nun *.mdl , *.mdl.0 , *.mdl.1 und so weiter rausgeschrieben. Das gleiche gilt für *.stt Dateien, die ebenfalls *.stt.0 usw rausgeschrieben werden. Habe es schon mit regulären Ausdrücken probiert, komme hier allerdings nicht weiter. Habt Ihr mir einen Tipp wie ich das umgesetzt bekomme?
Das derzeitige Skript schaut wie folgt aus.
# Copy restart files in case a oldjob file was set
if 'PAS_OLDJOB_FILE' in os.environ:
if os.environ['PAS_OLDJOB_FILE']:
print('PAS_OLDJOB_FILE = "%s"' % os.environ['PAS_OLDJOB_FILE'])
sys.stdout.flush()
path = '/' + '/'.join(os.environ['PAS_OLDJOB_FILE'].split('/')[3:])
path = os.path.dirname(path)
old_job_file = os.environ['PAS_OLDJOB_FILE'].split('/')[-1]
old_job_file = '.'.join(old_job_file.split('.')[:-1])
for s in ['.mdl' , '.stt' , '.prt', '.res', '.sim']:
f = path + '/' + old_job_file + s
if os.path.isfile(f):
print('Stage file ', f.split('/')[-1])
f = 'SERVERHOSTNAME:' + f
print('source file = %s' % f)
print(' sink file = %s' % os.environ['PBS_JOBDIR'] + '/' + f.split('/')[-1])
cmd = '/usr/bin/scp ' + f + ' ' + os.environ['PBS_JOBDIR'] + '/' + f.split('/')[-1]
os.system(cmd)
#shutil.copyfile(f, os.environ['PBS_JOBDIR'] + '/' + f.split('/')[-1])
else:
print('Could not find file ', f.split('/')[-1])
Für Testzwecke habe ich es mal so angepasst.
# Copy restart files in case a oldjob file was set
if 'PAS_OLDJOB_FILE' in os.environ:
if os.environ['PAS_OLDJOB_FILE']:
print('PAS_OLDJOB_FILE = "%s"' % os.environ['PAS_OLDJOB_FILE'])
sys.stdout.flush()
path = '/' + '/'.join(os.environ['PAS_OLDJOB_FILE'].split('/')[3:])
path = os.path.dirname(path)
old_job_file = os.environ['PAS_OLDJOB_FILE'].split('/')[-1]
old_job_file = '.'.join(old_job_file.split('.')[:-1])
for s in ['.mdl' , '.stt' , '.prt', '.res', '.sim', '.stt.0', '.stt.1', '.stt.2', '.stt.3', '.mdl.0', '.mdl.1', '.mdl.2', '.mdl.3' ]:
f = path + '/' + old_job_file + s
if os.path.isfile(f):
print('Stage file ', f.split('/')[-1])
f = 'SERVERHOSTNAME:' + f
print('source file = %s' % f)
print(' sink file = %s' % os.environ['PBS_JOBDIR'] + '/' + f.split('/')[-1])
cmd = '/usr/bin/scp ' + f + ' ' + os.environ['PBS_JOBDIR'] + '/' + f.split('/')[-1]
os.system(cmd)
#shutil.copyfile(f, os.environ['PBS_JOBDIR'] + '/' + f.split('/')[-1])
else:
print('Could not find file ', f.split('/')[-1])
Schon mal vielen Dank für die Hinweise.
ms1982
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 83169880257
Url: https://administrator.de/contentid/83169880257
Ausgedruckt am: 21.11.2024 um 19:11 Uhr
3 Kommentare
Neuester Kommentar
Glob is your friend
https://tio.run/##LY0xDsMgEAR7XrFyw@FENO7yGycBGwlzCE6y/XoSnEyx1Wg2n7Jyml ...
Gruß Sid.
https://tio.run/##LY0xDsMgEAR7XrFyw@FENO7yGycBGwlzCE6y/XoSnEyx1Wg2n7Jyml ...
Gruß Sid.
Nein, der erste Part war nur für das Erstellen der Demo-Dateien für die Umgebung, das brauchst du bei dir nicht, da die Dateien bei dir ja schon existieren.