Каковы различия между системой и обратными галочками и каналами в Perl?

Вы можете использовать:

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
27
задан brian d foy 28 April 2009 в 18:20
поделиться

4 ответа

  • system (): запускает команду и возвращает состояние выхода команды
  • backticks: запускает команду и возвращает вывод команды
  • pipe: запускает команду и позволяет вам используйте их как дескриптор

Также обратные метки перенаправляют STDOUT исполняемой программы в переменную, и система отправляет его в STDOUT вашей основной программы.

36
ответ дан 28 November 2019 в 05:23
поделиться

Документация perlipc объясняет различные способы взаимодействия с другими процессами из Perl, а открытая документация perlfunc объясняет конвейерные файловые дескрипторы.

  • Система отправляет свой вывод на стандартный вывод (и с ошибкой)
  • Обратные метки фиксируют стандартный вывод и возвращают его (но не стандартную ошибку).
  • Открытие по каналу позволяет захватить вывод и прочитать его из дескриптора файла. или для печати в дескриптор файла и использования его в качестве входных данных для внешней команды.

Существуют также модули, которые обрабатывают эти детали в кросс-платформенных случаях.

3
ответ дан 28 November 2019 в 05:23
поделиться

система также возвращает значение выхода из приложения (ERRORLEVEL в Windows). Каналы немного сложнее в использовании, так как их чтение и закрытие добавляет дополнительный код. Наконец, они имеют различную реализацию, которая должна была делать разные вещи. Используя каналы, вы можете общаться с выполненными приложениями, в то время как другие команды не позволяют это (легко).

2
ответ дан 28 November 2019 в 05:23
поделиться

Получение статуса завершения программы не ограничено system () . Когда вы вызываете close (PIPE) , он возвращает статус выхода, и вы можете получить последний статус выхода для всех 3 методов из $? .

Также обратите внимание, что

readpipe('...')

совпадает с

`...`
1
ответ дан 28 November 2019 в 05:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: