Как преобразовать 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_ls.split('\n')

Я не уверен, как вы можете изменить вывод данных 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']
Другие вопросы по тегам