无法使用open(sys.argv [])读取Python 2.7.4中的文件

时间:2013-05-13 20:28:47

标签: python python-2.7

我在Mac上的终端(OS Lion)的Python环境中。

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 个答案:

答案 0 :(得分:4)

你不能在python本身内运行python脚本。

您需要从命令行启动脚本:

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

答案 1 :(得分:2)

使用命令提示符或Bash shell。

执行。

python scriptName.py < Space Seperated Arguments >

答案 2 :(得分:1)

从提示符处看起来好像您正在尝试从Python解释器中运行脚本,即您正在键入python,然后在python >>>提示符下输入您的脚本名称和参数。该提示旨在以交互方式键入实际的Python命令。

如果你退出Python解释器并在正常的shell提示符下输入你的脚本名称和参数,那就行了(只要你有#!/usr/bin/python作为你脚本的第一行)。

答案 3 :(得分: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")