| import datetime |
| import os |
| import pickle |
| import subprocess |
| import sys |
|
|
|
|
| def print_args(args): |
| opts = vars(args) |
| print('======= Options ========') |
| for k, v in sorted(opts.items()): |
| print('{}: {}'.format(k, v)) |
| print('========================') |
|
|
|
|
| def save_args(args, save_folder, opt_prefix='opt', verbose=True): |
| opts = vars(args) |
| |
| if not os.path.exists(save_folder): |
| os.makedirs(save_folder, exist_ok=True) |
|
|
| |
| opt_filename = '{}.txt'.format(opt_prefix) |
| opt_path = os.path.join(save_folder, opt_filename) |
| with open(opt_path, 'a') as opt_file: |
| opt_file.write('====== Options ======\n') |
| for k, v in sorted(opts.items()): |
| opt_file.write( |
| '{option}: {value}\n'.format(option=str(k), value=str(v))) |
| opt_file.write('=====================\n') |
| opt_file.write('launched {} at {}\n'.format( |
| str(sys.argv[0]), str(datetime.datetime.now()))) |
|
|
| |
| label = subprocess.check_output(["git", "describe", |
| "--always"]).strip() |
| if subprocess.call( |
| ["git", "branch"], |
| stderr=subprocess.STDOUT, |
| stdout=open(os.devnull, 'w')) == 0: |
| opt_file.write('=== Git info ====\n') |
| opt_file.write('{}\n'.format(label)) |
| commit = subprocess.check_output(['git', 'rev-parse', 'HEAD']) |
| opt_file.write('commit : {}\n'.format(commit.strip())) |
|
|
| opt_picklename = '{}.pkl'.format(opt_prefix) |
| opt_picklepath = os.path.join(save_folder, opt_picklename) |
| with open(opt_picklepath, 'wb') as opt_file: |
| pickle.dump(opts, opt_file) |
| if verbose: |
| print('Saved options to {}'.format(opt_path)) |
|
|