我写了一个python脚本来查询freebase一个开源数据库。 我在Windows中编写文件并将其移植到Linux。 我已经改变了文件的权限,并添加了相应的头文件,但是linux shell返回的是:
无此文件或目录
这是文件:
#! /usr/bin/env python import urllib import string #query freebase to find results containing graduates from the University of Texas query1=[{ "name": null, "type": "/people/person", "!/education/education/student": [{ "!/education/educational_institution/students_graduates": [{ "id": "/en/university_of_texas" }] }] }] query2=[{ "id": "/en/university_of_texas", "/education/educational_institution/students_graduates": [{ "student": { "name": null }, "degree": { "name": null }, "end_date": null, "major_field_of_study": [{ "name": null }] }] }] html = urllib.urlopen("https://www.googleapis.com/freebase/v1/mqlread?query="+query2) library = json.loads(html) name_dic = {} for e in library["result"]: name_dic[e["student"]["name"]] = [e["degree"]["name"],int(e["end_date"]),e["major_field_of_study"][0]["name"]] conn = sqlite3.connect('data.db') c = conn.cursor() t=[] for key in name_dic.iterkeys(): t.append((key, name_dic[key][0],name_dic[key][1],name_dic[key][2])) try: c.executemany('insert into people values(?,?,?,?)',t) print "entities found and saved" except sqlite3.IntegrityError: for k in t: try: c.execute('insert into people values (?,?,?,?)',k) print (str(k[0])+" was added") except sqlite3.IntegrityError: print "Could not save entities" conn.commit()
我最近遇到了同样的问题。 问题是移植文件的文件格式仍然是DOS格式,并且包含特殊字符。 在脚本文件命令上运行dos2unix解决了这个问题。
如果你的Linux系统缺少/ usr / bin / env,你会得到这个错误:
-bash: ./test.py: /usr/bin/env: bad interpreter: No such file or directory
(其中test.py是脚本的名称)
如果缺少python(不应该这样做,大多数Linux系统都依赖于它),那么您将得到:
/usr/bin/env: python: No such file or directory
python脚本本身没有任何东西,我可以看到,会给你任何其他的错误,所以我怀疑这是其中的一个。
在shell运行下面的命令:
$哪个python
改变第一行
#! / usr / bin / env python
至
#!_ output_of_which_python_
像这样运行它:
python /path/to/file.py
那你以后可以休息一下