ms1982
Goto Top

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.
# 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

Content-Key: 83169880257

Url: https://administrator.de/contentid/83169880257

Printed on: April 28, 2024 at 04:04 o'clock

Mitglied: 7907292512
Solution 7907292512 Oct 07, 2023 at 14:01:57 (UTC)
Goto Top
Member: ms1982
Solution ms1982 Oct 09, 2023 at 11:19:48 (UTC)
Goto Top
Vielen Dank für den Hinweis Sid.

Den Wert für die Range Funktion muss ich dann natürlich vorher ermitteln oder?

Gruss ms1982
Mitglied: 7907292512
Solution 7907292512 Oct 09, 2023 updated at 11:26:01 (UTC)
Goto Top
Zitat von @ms1982:
Den Wert für die Range Funktion muss ich dann natürlich vorher ermitteln oder?
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.