Как использовать модуль подпроцесса в Python

1

Что делать, если я хочу вызвать команду как терминал (ubuntu) из python 2.7, поэтому я хочу использовать nfc-mfclassic, который он может использовать в терминале ubuntu... Кто-то может помочь мне использовать это в python, пожалуйста.

Я запускаю эту вещь: nfc-mfclassic ra dumptest.mfd в терминале (Ubuntu)

Usage: nfc-mfclassic r|w a|b <dump.mfd> [<keys.mfd>]
  r|w           - Perform read from (r) or write to (w) card
  a|b           - Use A or B keys for action
  <dump.mfd>    - MiFare Dump (MFD) used to write (card to MFD) or (MFD to card)
  <keys.mfd>    - MiFare Dump (MFD) that contain the keys (optional)
Or: nfc-mfclassic x <dump.mfd> <payload.bin>
  x             - Extract payload (data blocks) from MFD
  <dump.mfd>    - MiFare Dump (MFD) that contains wanted payload
  <payload.bin> - Binary file where payload will be extracted
Теги:
subprocess

2 ответа

1
Лучший ответ

Вы можете использовать подпроцесс напрямую, но есть пара очень хороших оберток подпроцессов, которые сделают вашу жизнь намного проще.

Мне нравится PBS:

PBS - это уникальная оболочка подпроцесса, которая динамически отображает ваши системные программы в функции Python. PBS помогает вам писать сценарии оболочки в Python, предоставляя вам хорошие возможности Bash (простой командный вызов, простой конвейер) со всей мощью и гибкостью Python.

Пример:

import pbs
print pbs.nfc_mfclassic("r", "a", "dumptest.mfd")

Если вы хотите иметь дело с итерационным приложением, возможно, вам стоит искать что-то вроде pyexpect:

# This connects to the openbsd ftp site and
# downloads the recursive directory listing.
import pexpect
child = pexpect.spawn ('ftp ftp.openbsd.org')
child.expect ('Name .*: ')
child.sendline ('anonymous')
child.expect ('Password:')
child.sendline ('[email protected]')
child.expect ('ftp> ')
child.sendline ('cd pub')
child.expect('ftp> ')
child.sendline ('get ls-lR.gz')
child.expect('ftp> ')
child.sendline ('bye')
  • 0
    Большое спасибо, это очень полезно для меня
0
>>> import subprocess
>>> command = raw_input()
nfc-mfclassic r a dumptest.mfd

p = subprocess.Popen(command)

команда - это именно то, что вы набрали в командной строке shell. сложная часть - правильно форматировать текст команды.

ref: http://docs.python.org/library/subprocess.html#module-subprocess

Ещё вопросы

Сообщество Overcoder
Наверх
Меню