2013-05-13 37 views
0

我位於我的Mac(OS Lion)終端上的Python環境中。無法在Python 2.7.4中使用open(sys.argv [])讀取文件

的Python腳本包含以下行,

def main(): 
    file1 = open(sys.argv[1]) 
    file2 = open(sys.argv[2]) 
    file3 = open(sys.argv[3]) 

我認爲我需要做來運行腳本:

script.py file1.txt file2.txt file3.txt 

但我不斷收到以下錯誤信息:

>>> process.py output1.txt output2.txt output3.txt 
    File "<stdin>", line 1 
    process.py output1.txt output2.txt output3.txt 
        ^
SyntaxError: invalid syntax 

所有文件和腳本都在當前工作目錄中(我通過import os,並運行print os.getcwd()。有人能指引我走向正確的方向嗎?謝謝!

回答

4

你不能從Python本身運行python腳本。

您需要在命令行啓動腳本:

python script.py file1.txt file2.txt file3.txt 
+0

不應該「你不能用SYS運行python腳本。從Python本身的參數「? – TehTris 2013-05-13 20:33:49

+0

好的,除了'eval'和朋友,你不能運行python腳本。 'sys.argv'對於OP的作用並不重要,只有當你使用'execfile'時,它纔會有所作爲。 – 2013-05-13 20:36:24

+0

謝謝@ThomasFenzl – Alex 2013-05-13 20:48:27

2

使用命令提示符或Bash shell中。

做。

python scriptName.py < Space Seperated Arguments >

1

好像你正試圖從Python解釋器中運行你的腳本看起來從提示,即你輸入python,然後在蟒蛇>>>提示您輸入腳本的名稱和參數。該提示符旨在用於以交互方式輸入實際的Python命令。

如果您退出Python解釋器,只需在正常的shell提示符下輸入腳本名稱和參數,那將起作用(只要您的腳本的第一行有#!/usr/bin/python即可)。

1

如果您希望能夠在Python中以編程方式使用腳本,可以稍微修改接受參數的main函數,例如,

def main(*argv): 
    file1 = open(argv[1]) 
    file2 = open(argv[2]) 
    file3 = open(argv[3]) 

if __name__ == "__main__": 
    main(*sys.argv) 

這給了你更多的靈活性,讓您可以在命令行中也是一個程序中像調用程序:這個說

import process 
process.main("output1.txt", "output2.txt", "output3.txt")