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


call php script from python (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]

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

应该修复它

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

发件人:http://docs.python.org/library/subprocess.html#frequently-使用的参数

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

发件人:http://docs.python.org/library/subprocess.html#subprocess.call

call()的签名是:

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

你会希望你的CL论点都在一个单一的列表中——正如Jakob提供的那样。这是调用()的第一个参数。

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