2015-02-09 2 views
-1

Я запускаю подпроцесс, который дает мне список путей для подкаталога. Теперь каждому члену (пути) в списке я пытаюсь конкатенировать, чтобы получить конечный путь. Но поскольку члены списка и строка имеют разные типы данных, я не могу конкатенировать путь из списка и другую строку для генерации конечного пути.Python: Как я могу конкатенировать список путей

Может ли кто-нибудь помочь мне в этом?

directories = subprocess.check_output(
    ['find', '/Users/sdb99/Desktop', '-type', 'd', '-mmin', '-60', '-type', 'd','-mmin', '+5']).splitlines() 
number_of_directories = len(directories) 
n = 1 
for n in range(0,number_of_directories):     
    dire =str(directories[n]).strip('[]') 
    b_new = dire[n] + '/1' 
    print(b_new) 
+0

Ваш код очень запутан. Какую ошибку вы получаете? Можете ли вы привести пример того, каково может быть возвращаемое значение вашего запроса подпроцесса и что вы хотите его преобразовать? Кроме того, какую версию Python вы используете (вы отметили свой вопрос как с Python 2.7, так и с Python 3.x, которые являются двумя основными разновидностями, но у них есть существенные различия между ними). – Blckknght

+0

Просто уточнить: directories = subprocess.check_output ( ['find', '/ Users/sdb99/Desktop', '-type', 'd', '-mmin', '-60', '-type', 'd', '- mmin', '+5']). splitlines() Эта строка дает мне путь к каталогам, которые создаются в папке рабочего стола. После каждого пути в списке я хочу добавить другую строку, например: «Пользователи/sdb99/Desktop/UntitledFolder2» (этот список i gt) +/old_files. Это должно генерировать полный путь следующим образом: «Пользователи/sdb99/Desktop/UntitledFolder2/old_files. Я не могу создать это, эти два пути имеют разные типы данных. – learnningprogramming

ответ

1

Нет необходимости ничего снимать, и ваша логика здесь близка, но ошибочна. список состоит из строк, все, что вам нужно сделать, это назначить их строке в цикле.

dire = '' 
directories = subprocess.check_output(
    ['find', '/Users/sdb99/Desktop', '-type', 'd', '-mmin', '-60', '-type', 'd','-mmin', '+5']).splitlines() 
number_of_directories = len(directories) 
for n in range(0,number_of_directories): 
    dire += directories[n] 
    dire += ' ' 
print dire 
type dire 
+0

Спасибо, castaway2000 за ваш ответ. Но я получаю следующее сообщение об ошибке: отслеживающих (самые последний вызов последнего): Файл "/Users/sdb99/PycharmProjects/Scan_log_version1.1/test_pathselection.py", строки 10, в отчаянных + = каталогах [п ] TypeError: Невозможно преобразовать объект 'bytes' в str неявно Процесс завершен с кодом выхода 1 – learnningprogramming

+0

Я не уверен на 100%, если это будет работать, но попробуйте это: dire + = str (каталоги [n]) – castaway2000

+0

или также попробуйте этот каталог dire + = [n] .decode («utf-8») , но было бы разумно отладить индекс ведьмы, вызывающий эту проблему. напечатайте n и посмотрите результат после ошибки, а затем вы можете добавить условный оператор для декодирования этого индекса, если это необходимо – castaway2000

Смежные вопросы