2012-08-02 99 views
2

我有一个PHP脚本,我在这样的命令行呼吁:调用蟒蛇(子)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:感谢它的工作原理,但我有问题withs ARGS因为使用的消息出现了:

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 /脚本/路径”, “F”, “--user”, “X”, “--title”,X,文件]

+0

为什么你不能在Python中做到这一点的任何原因? – 2012-08-02 15:38:21

回答

1

她由于杂乱的文件,e是一个混乱的解释。

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

为了支持各种各样的使用情况下,POPEN构造函数(和 方便的功能)接受了大量的可选参数。 对于大多数典型的用例,这些参数中的很多可以安全地保留 的默认值。这是最常用的 的参数是:

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

呼叫()的签名是:

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

你会希望所有在一个单一的列表中CL参数 - 正如Jakob所提供的。这是调用()的第一个参数。

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

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

应该修复它