-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathload_data_sets.py
More file actions
executable file
·52 lines (42 loc) · 1.8 KB
/
load_data_sets.py
File metadata and controls
executable file
·52 lines (42 loc) · 1.8 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
51
52
#!/usr/bin/env python
# coding=utf-8
import argparse
import os
import shutil
import tarfile
from util import adb
def load_data_set(data_set_name):
data_set_dir_path = os.path.join('datasets', data_set_name)
data_set_tar_path = data_set_dir_path + '.tar'
with tarfile.open(data_set_tar_path) as tar:
tar.extractall(path=data_set_dir_path)
try:
device = adb.get_device()
for file_name in os.listdir(data_set_dir_path):
file_path = os.path.join(data_set_dir_path, file_name)
if os.path.isfile(file_path) and file_name.endswith('.apk'):
print "Installing '{0}' into the device...".format(file_name)
package_name = os.path.splitext(file_name)[0]
if '-' in package_name:
package_name = package_name.partition('-')[0]
device.uninstall(package_name)
device.install(file_path, replace=True)
for file_name in os.listdir(data_set_dir_path):
file_path = os.path.join(data_set_dir_path, file_name)
if os.path.isdir(file_path):
try:
device.shell(['rm', '-r', '/data/data/' + file_name])
except RuntimeError:
pass
print "Pushing '{0}' data into the device...".format(file_name)
device.push(file_path, '/data/data/' + file_name)
finally:
shutil.rmtree(data_set_dir_path)
return True
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Loads the data set to the android emulator.')
parser.add_argument('data_set_name', help='Name of the dataset to be loaded.')
args = parser.parse_args()
success = load_data_set(args.data_set_name)
if success:
print "The data set was pushed successfully."