Вы можете использовать:
s=pd.DataFrame([[x] + [z] for x, y in zip(df1.index,df1.Details) for z in y])
s=s.merge(df1,left_on=0,right_index=True).drop(['Details',0],1)
print(s.pop(1).apply(pd.Series).join(s))
amount id order_id user_id
0 160 p2 5c7c9 A
1 260 p3 5c7c9 A
2 10 p1 5c5c4 B
3 260 p3 5c5c4 B
Также обратные метки перенаправляют STDOUT исполняемой программы в переменную, и система отправляет его в STDOUT вашей основной программы.
Документация perlipc объясняет различные способы взаимодействия с другими процессами из Perl, а открытая документация perlfunc объясняет конвейерные файловые дескрипторы.
Существуют также модули, которые обрабатывают эти детали в кросс-платформенных случаях.
система также возвращает значение выхода из приложения (ERRORLEVEL в Windows). Каналы немного сложнее в использовании, так как их чтение и закрытие добавляет дополнительный код. Наконец, они имеют различную реализацию, которая должна была делать разные вещи. Используя каналы, вы можете общаться с выполненными приложениями, в то время как другие команды не позволяют это (легко).
Получение статуса завершения программы не ограничено system ()
. Когда вы вызываете close (PIPE)
, он возвращает статус выхода, и вы можете получить последний статус выхода для всех 3 методов из $?
.
Также обратите внимание, что
readpipe('...')
совпадает с
`...`