【问题标题】:call php script from python (subprocess)从python调用php脚本(子进程)
【发布时间】:2012-07-31 15:08:14
【问题描述】:

我有一个像这样在命令行中调用的 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 :感谢它有效,但我遇到了 args 的问题,因为出现了 Usage 消息:

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, 文件]

【问题讨论】:

  • 有什么理由不能在 python 中做到这一点?

标签: php python process subprocess


【解决方案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 恰好是其中之一。

【讨论】:

    【解决方案2】:
    subprocess.call(["php", "-f", "importTextFile.php", "--user=X", "--title="'%s' % name, file])
    

    应该修复它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-22
      • 1970-01-01
      • 2011-11-01
      • 1970-01-01
      • 2020-06-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      相关资源
      最近更新 更多