51 lines
2.0 KiB
Python
51 lines
2.0 KiB
Python
import subprocess
|
|
import time
|
|
import os
|
|
import csv
|
|
|
|
def get_last_processed_filename(progress_file_path):
|
|
try:
|
|
with open(progress_file_path, "r") as file:
|
|
return file.read().strip()
|
|
except FileNotFoundError:
|
|
return None
|
|
|
|
def set_last_processed_filename(progress_file_path, filename):
|
|
with open(progress_file_path, "w") as file:
|
|
file.write(filename)
|
|
|
|
def is_all_processed(input_folder, progress_file_path):
|
|
last_processed = get_last_processed_filename(progress_file_path)
|
|
if not last_processed:
|
|
return False
|
|
filenames = sorted(os.listdir(input_folder))
|
|
return last_processed not in filenames or filenames.index(last_processed) == len(filenames) - 1
|
|
|
|
def log_error(error_log_file, transaction, error_message):
|
|
with open(error_log_file, 'a', newline='') as file:
|
|
writer = csv.writer(file)
|
|
writer.writerow([transaction, error_message])
|
|
|
|
def run_script(input_folder, progress_file_path, error_log_file):
|
|
while not is_all_processed(input_folder, progress_file_path):
|
|
last_processed = get_last_processed_filename(progress_file_path)
|
|
try:
|
|
subprocess.run(['python3', 'analyze3.py'], check=True)
|
|
except subprocess.CalledProcessError as e:
|
|
print("Script crashed. Restarting...")
|
|
log_error(error_log_file, last_processed if last_processed else "unknown", "Script crashed: " + str(e))
|
|
filenames = sorted(os.listdir(input_folder))
|
|
next_file_index = filenames.index(last_processed) + 1 if last_processed in filenames else 0
|
|
if next_file_index < len(filenames):
|
|
next_file = filenames[next_file_index]
|
|
set_last_processed_filename(progress_file_path, next_file)
|
|
time.sleep(1)
|
|
|
|
print("All files have been processed.")
|
|
|
|
if __name__ == "__main__":
|
|
input_folder = "/home/yangyi/database/smart_contract-dataset/Tx_tuples"
|
|
progress_file_path = 'progress.txt'
|
|
error_log_file = 'error_log.csv'
|
|
run_script(input_folder, progress_file_path, error_log_file)
|