-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathzip_submission.py
More file actions
50 lines (40 loc) · 1.57 KB
/
zip_submission.py
File metadata and controls
50 lines (40 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import argparse
import os
import shutil
import yaml
def copy(src: str, dest: str, directory: bool, required: bool):
ds = "Directory" if directory else "File"
def handle_error(e):
if required:
print("%s not copied. Error: %s" % (ds, e))
print("Exiting, SUBMISSION NOT ZIPPED!")
shutil.rmtree("temp_submission", ignore_errors=True)
exit()
else:
print("%s %s missing but optional, skipping." % (ds, src))
try:
if directory:
shutil.copytree(src, dest)
else:
shutil.copy(src, dest)
except shutil.Error as e:
handle_error(e)
except OSError as e:
handle_error(e)
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--gt_username", required=True, type=str)
args = parser.parse_args()
shutil.rmtree("temp_submission", ignore_errors=True)
os.mkdir("temp_submission")
dir_list = yaml.load(open(".zip_dir_list.yml"), Loader=yaml.BaseLoader)
for dir_name in dir_list["required_directories"]:
copy(dir_name, "/".join(["temp_submission", dir_name]), True, True)
for dir_name in dir_list["optional_directories"]:
copy(dir_name, "/".join(["temp_submission", dir_name]), True, False)
out_file = args.gt_username + ".zip"
shutil.make_archive(args.gt_username, "zip", "temp_submission")
if os.path.getsize(out_file) > 15000000:
os.remove(out_file)
print("SUBMISSION DID NOT ZIP, ZIPPED SIZE > 15MB")
shutil.rmtree("temp_submission", ignore_errors=True)