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
一样执行它。
要么:
-
search.py 的第一行应该是#!注释,指定查找Python可执行文件的路径,通常是[#!/usr/bin/env python](为什么人们在Python脚本的第一行写#!/usr/bin/env python?在 python-script 的第一行)。通常这是#!/usr/env/bin python。不要使用硬路径,例如#/opt/local/bin/python2.7
-
否则,您可以调用为
python yourfile.py <yourargs> ...
上一个: 如果import sys
失败,请发布更多文件。
也许您的安装搞砸了。
您能否成功导入其他任何内容,例如 import re
?
您的平台,操作系统和Python版本是什么?您是如何安装的?源?二进制文件?分配?哪些,从哪里来?