![](/img/trans.png)
[英]How to separate the parts of this unix command to use in Python subprocess module?
[英]How to use subprocess module in python
如果我想从python 2.7调用诸如terminal(ubuntu)之类的命令怎么办,所以我想使用它可以在ubuntu终端中使用的nfc-mfclassic ...请有人可以帮助我在python中使用它。
我在终端(Ubuntu)中运行此东西: nfc-mfclassic ra dumptest.mfd
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
您可以直接使用子流程,但是有两个非常好的子流程包装器,它们可以使您的生活更加轻松。
我喜欢PBS :
PBS是一个独特的子流程包装器,可将您的系统程序动态映射到Python函数。 PBS通过为您提供Bash的良好功能(简单的命令调用,简单的管道)以及Python的所有功能和灵活性,可帮助您用Python编写Shell脚本。
例:
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 ('noah@example.com')
child.expect ('ftp> ')
child.sendline ('cd pub')
child.expect('ftp> ')
child.sendline ('get ls-lR.gz')
child.expect('ftp> ')
child.sendline ('bye')
>>> import subprocess
>>> command = raw_input()
nfc-mfclassic r a dumptest.mfd
p = subprocess.Popen(command)
该命令正是您在shell cmdline中键入的内容。 困难的部分是正确格式化命令文本。
参考: http : //docs.python.org/library/subprocess.html#module-subprocess
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.