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网站运行图像。不确定分发,二进制文件......
答案 0 :(得分:3)
您必须添加import sys
才能使用sys.argv
。检查this。
我试过这个:
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
答案 1 :(得分:2)
问题是你根本不用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也会像执行{{1}一样执行它}})。
答案 2 :(得分:0)
或者:
search.py的第一行应该是#!注释指定查找python可执行文件的路径,通常是[#!/ usr / bin / env python](Why do people write #!/usr/bin/env python on the first line of a Python script? 上最一线对的一-Python的脚本)。通常这是#!/ usr / env / bin python。不要使用硬道路,例如#/选择/ local / bin中/ python2.7
或者您可以调用python yourfile.py <yourargs> ...
上一条:如果import sys
失败,请发布更多文件。
也许你的安装搞砸了。
您可以成功导入其他任何内容,例如import re
?
您的平台,操作系统和Python版本是什么?你是怎么安装的?资源?二进制文件?分配?哪些,从哪里来?