Python 在非常短的程序中遇到意外的")"



Python 在使用以下代码打开文件时遇到了一些问题

if __name__ == "__main__":
    fileName = sys.argv[1]
    with open(fileName, 'r') as f:
       for line in f:
           print line

它正在产生错误

./search.py: line 3: syntax error near unexpected token `('
./search.py: line 3: `  with open(fileName, 'r') as f:'

我是否缺少导入?这可能是什么原因?

编辑: 操作系统 - CentOS, Python 版本 2.6.6

不确定我是如何安装的,我正在运行来自 .edu openstack 站点的映像。不确定分布,二进制文件,...

您必须添加import sys才能使用 sys.argv 。看看这个。

我试过这个:

chmod u+x yourfile.py
./yourfile.py

它给了我:

./jd.py: line 4: syntax error near unexpected token `('
./jd.py: line 4: `    with open(fileName, 'r') as f:'

如果您正在执行./search.py file请在文件#!/usr/bin/env python的开头添加。否则,请使用python file.py input

问题是你根本没有用Python运行你的程序!当您执行./script时(假设script是文本脚本,而不是二进制程序),系统将在文件顶部查找以序列#!开头的一行。如果它找到该行,则该行的其余部分将用作该脚本的解释器:运行该脚本的程序。如果未找到该行,则系统默认为 /bin/sh

因此,基本上,通过省略脚本顶部的魔术行#!/usr/bin/python,系统将使用 sh 运行您的 Python 脚本,这将产生各种不正确的结果。

然后,解决方案是将行#!/usr/bin/python(或等效的行,如#!/usr/bin/env python)添加到 Python 脚本的顶部,以便您的系统使用 Python 运行它。或者,您也可以始终使用 python search.py 运行程序,而不是使用 ./search.py

(请注意,在 Linux 上,像 .py 这样的文件扩展名对系统几乎没有任何意义。因此,即使它以 .py 结尾,Linux 也会像您编写/bin/sh search.py 一样执行它。

要么:

  1. search.py 的第一行应该是#!注释,指定查找Python可执行文件的路径,通常是[#!/usr/bin/env python](为什么人们在Python脚本的第一行写#!/usr/bin/env python?在 python-script 的第一行)。通常这是#!/usr/env/bin python。不要使用硬路径,例如#/opt/local/bin/python2.7

  2. 否则,您可以调用为python yourfile.py <yourargs> ...


上一个: 如果import sys失败,请发布更多文件。

也许您的安装搞砸了。

您能否成功导入其他任何内容,例如 import re

您的平台,操作系统和Python版本是什么?您是如何安装的?源?二进制文件?分配?哪些,从哪里来?

相关内容

  • 没有找到相关文章

最新更新