Pierwszy commit - konfiguracja automatyczna
This commit is contained in:
107
process_all.py
Normal file
107
process_all.py
Normal file
@@ -0,0 +1,107 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Program do przetwarzania wielu rejestracji COMTRADE
|
||||
Przeszukuje rekurencyjnie podkatalogi i uruchamia tester dla kazdej rejestracji
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import shutil
|
||||
import subprocess
|
||||
|
||||
def find_comtrade_files(root_dir):
|
||||
"""Znajduje wszystkie pliki .CFG w podkatalogach"""
|
||||
cfg_files = []
|
||||
|
||||
for root, dirs, files in os.walk(root_dir):
|
||||
for file in files:
|
||||
if file.upper().endswith('.CFG'):
|
||||
cfg_path = os.path.join(root, file)
|
||||
dat_file = cfg_path[:-4] + '.DAT'
|
||||
if os.path.exists(dat_file):
|
||||
cfg_files.append(cfg_path)
|
||||
|
||||
return cfg_files
|
||||
|
||||
def process_recording(cfg_file, tester_script):
|
||||
"""Przetwarza pojedyncza rejestracje"""
|
||||
dir_name = os.path.dirname(cfg_file)
|
||||
file_name = os.path.basename(cfg_file)[:-4]
|
||||
|
||||
print(f"\n{'='*60}")
|
||||
print(f"Przetwarzanie: {file_name}")
|
||||
print(f"Katalog: {dir_name}")
|
||||
print('='*60)
|
||||
|
||||
original_dir = os.getcwd()
|
||||
os.chdir(dir_name)
|
||||
|
||||
try:
|
||||
result = subprocess.run(
|
||||
[sys.executable, tester_script, file_name],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
timeout=120
|
||||
)
|
||||
|
||||
if result.returncode == 0:
|
||||
print(f"OK - wynik zapisany w {dir_name}")
|
||||
|
||||
# Przenies wynik PNG
|
||||
if os.path.exists('test_result.png'):
|
||||
output_name = f'{file_name}_result.png'
|
||||
if os.path.exists(output_name):
|
||||
os.remove(output_name)
|
||||
shutil.move('test_result.png', output_name)
|
||||
print(f"Zapisano: {output_name}")
|
||||
|
||||
# Przenies rezultat.md
|
||||
if os.path.exists('rezultat.md'):
|
||||
output_md = f'{file_name}_rezultat.md'
|
||||
if os.path.exists(output_md):
|
||||
os.remove(output_md)
|
||||
shutil.move('rezultat.md', output_md)
|
||||
print(f"Zapisano: {output_md}")
|
||||
else:
|
||||
print(f"BLED przetwarzania:")
|
||||
print(result.stderr)
|
||||
|
||||
except subprocess.TimeoutExpired:
|
||||
print(f"BLED - przekroczony czas wykonania")
|
||||
except Exception as e:
|
||||
print(f"BLED - {str(e)}")
|
||||
finally:
|
||||
os.chdir(original_dir)
|
||||
|
||||
def main():
|
||||
if len(sys.argv) > 1:
|
||||
root_dir = sys.argv[1]
|
||||
else:
|
||||
root_dir = os.getcwd()
|
||||
|
||||
tester_script = os.path.join(os.getcwd(), 'tester.py')
|
||||
|
||||
if not os.path.exists(tester_script):
|
||||
print(f"BLED: Nie znaleziono {tester_script}")
|
||||
sys.exit(1)
|
||||
|
||||
print(f"Szukanie rejestracji COMTRADE w: {root_dir}")
|
||||
|
||||
cfg_files = find_comtrade_files(root_dir)
|
||||
|
||||
if not cfg_files:
|
||||
print("NIE ZNALEZIONO zadnych rejestracji COMTRADE")
|
||||
sys.exit(0)
|
||||
|
||||
print(f"ZNALEZIONO {len(cfg_files)} rejestracji")
|
||||
|
||||
for i, cfg_file in enumerate(cfg_files, 1):
|
||||
print(f"\n[{i}/{len(cfg_files)}]")
|
||||
process_recording(cfg_file, tester_script)
|
||||
|
||||
print(f"\n{'='*60}")
|
||||
print("ZAKONCZONO przetwarzanie wszystkich rejestracji")
|
||||
print('='*60)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user