从python调用php脚本(子进程)

时间:2012-08-02 15:33:34

标签: php python process subprocess

我有一个我在命令行中调用的php脚本:

$php importTextFile.php --user "X" --title "name" notice_X.txt 

我想在python脚本中使用该文件。我试过了:

for file in os.listdir("."):
    subprocess.call(["php", "-f", "importTextFile.php"], "--user=X", "--title="'%s' % name, file)

我跟他犯了错误:

  File "./pageFromFile.py", line 21, in main
    subprocess.call(["php", "-f","importTextFile.php"], "--user=Bot", "--title="'%s' % nom, fichier)
  File "/usr/lib/python2.7/subprocess.py", line 493, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib/python2.7/subprocess.py", line 629, in __init__
    raise TypeError("bufsize must be an integer")
TypeError: bufsize must be an integer

我不明白如何修复此错误。 谢谢你的帮助。

edit1 :谢谢它有效,但我遇到了问题,因为出现了用法消息:

Usage: php [options] [-f] <file> [--] [args...]
       php [options] -r <code> [--] [args...]
       php [options] [-B <begin_code>] -R <code> [-E <end_code>] [--] [args...]
       php [options] [-B <begin_code>] -F <file> [-E <end_code>] [--] [args...]
       php [options] -- [args...]
       php [options] -a

edit2:我改变了参数的顺序并且它有效: [“php”,“php / script / path”,“ - f”,“ - user”,“X”,“ - title”,X,file]

2 个答案:

答案 0 :(得分:5)

subprocess.call(["php", "-f", "importTextFile.php", "--user=X", "--title="'%s' % name, file])

应该解决它

答案 1 :(得分:1)

由于文档混乱,这是一个混乱的解释。

来自:http://docs.python.org/library/subprocess.html#frequently-used-arguments

  

为了支持各种各样的用例,Popen构造函数(以及   便利函数)接受大量可选参数。   对于大多数典型的用例,可以安全地保留许多这些参数   在他们的默认值。最常见的论据   是:

来自:http://docs.python.org/library/subprocess.html#subprocess.call

call()的签名是:

subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)

你会希望你的CL参数都在一个列表中 - 就像Jakob提供的那样。这是call()的第一个参数。

其他位置参数对应于类subprocess.Popen(http://docs.python.org/library/subprocess.html#subprocess.Popen)的初始化参数。 bufsize恰好是其中之一。