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-ID: 83169880257

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

Ausgedruckt am: 21.11.2024 um 19:11 Uhr

7907292512
Lösung 7907292512 07.10.2023 um 16:01:57 Uhr
Goto Top
ms1982
Lösung ms1982 09.10.2023 um 13:19:48 Uhr
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
7907292512
Lösung 7907292512 09.10.2023 aktualisiert um 13:26:01 Uhr
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.