2012-08-02 94 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]) 

應該修復它