Как преобразовать subprocesss.check_output() в список из строки?
Когда я запускаю этот подпроцесс cmd, возвращаемый тип является строкой, хотя в консоль выводятся 5 строк
s3_ls = subprocess.check_output(["aws", "s3", "ls", s3_loc, "--
recursive", "--profile", "RoleName"])
2016-11-17 23:34:45 0 dtop_dir/fldr_01/fldr_02/holding/date4y2m/category
2016-11-17 23:34:46 0 dtop_dir/fldr_01/fldr_02/holding/date4y2m/entity.01/
2016-12-05 17:37:25 234059 dtop_dir/fldr_01/fldr_02/holding/date4y2m/entity.01/entity.01.csv.gz
2016-11-17 23:34:47 0 dtop_dir/fldr_01/fldr_02/holding/date4y2m/entity.02/
2016-12-05 17:37:31 109015 dtop_dir/fldr_01/fldr_02/holding/date4y2m/entity.02/entity.02.csv.gz
Как я могу обработать этот вывод, чтобы он представлял собой список из 5 строк, а не просто большой длинной? Я попытался обернуть его в список (мой cmd подпроцесса), но это просто разбивает все на один символьный элемент.
То, что я хочу сделать, это получить список файлов, возвращаемых после запуска подпрограммы Python cmd выше
2 ответа
Решение
Я не уверен, как вы можете изменить вывод данных s3
команда, но с учетом того, что на выходе получается одна строка. Вы можете разделить его на имена файлов или всю строку, выполнив:
>>> re.findall(r'dtop.+', s)
['dtop_dir/fldr_01/fldr_02/holding/date4y2m/category', 'dtop_dir/fldr_01/fldr_02/holding/date4y2m/entity.01/', 'dtop_dir/fldr_01/fldr_02/holding/date4y2m/entity.01/entity.01.csv.gz', 'dtop_dir/fldr_01/fldr_02/holding/date4y2m/entity.02/', 'dtop_dir/fldr_01/fldr_02/holding/date4y2m/entity.02/entity.02.csv.gz']
Или же:
>>> re.split(r'\n', s) # or s.split('\n') would be the same here
['2016-11-17 23:34:45 0 dtop_dir/fldr_01/fldr_02/holding/date4y2m/category', '2016-11-17 23:34:46 0 dtop_dir/fldr_01/fldr_02/holding/date4y2m/entity.01/', '2016-12-05 17:37:25 234059 dtop_dir/fldr_01/fldr_02/holding/date4y2m/entity.01/entity.01.csv.gz', '2016-11-17 23:34:47 0 dtop_dir/fldr_01/fldr_02/holding/date4y2m/entity.02/', '2016-12-05 17:37:31 109015 dtop_dir/fldr_01/fldr_02/holding/date4y2m/entity.02/entity.02.csv.gz']