2

オープン ソース データベースである freebase にクエリを実行する Python スクリプトを作成しました。ファイルを Windows で作成し、Linux に移植しました。ファイルのアクセス許可を変更し、適切なヘッダーを追加しましたが、Linux シェルは次のように返します。

そのようなファイル、又はディレクトリはありません

ファイルは次のとおりです。

#! /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()       
4

4 に答える 4

7

最近同じ問題に遭遇しました。問題は、移植されたファイルのファイル形式がまだ DOS 形式であり、特殊文字が含まれていたことです。スクリプト ファイル コマンドでdos2unixを実行すると、問題が解決しました。

于 2013-08-23T11:11:48.897 に答える
1

シェルで次のコマンドを実行します。

$どのパイソン

最初の行を変更

#! /usr/bin/env パイソン

#!_output_of_which_python_

于 2012-09-13T18:49:20.887 に答える
1

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スクリプト自体には、そのような他のエラーを与えるものは何もないので、それらの2つのうちの1つであると思われます。

于 2012-09-13T18:42:00.023 に答える
-4

次のように実行します。

python /path/to/file.py

その後、残りの作業を後で行うことができます。

于 2012-09-13T18:45:18.440 に答える