-1

まず第一に、私はPythonでまったく新しいです。私はグラフィック デザイナーで、グループのロゴ用にグループ メンバーの写真を入手する必要があります。私はこれを見つけました: https://github.com/lionaneesh/IIITD-Students-Collage そして、それは私が必要とすることをほとんど行うはずですが、どうやら私は何か間違ったことをしていて、意図したとおりに機能しません。

このスクリプトを実行すると:

import json
from urllib2 import urlopen


fp = open("test2.txt")
data = json.loads(fp.read())
fp.close()

user_photos = {} # id -> [User's Name, Photo URL]

for user in data["data"]:
    print user
    page = urlopen("http://graph.facebook.com/" + user["id"] + "?fields=picture")
    page_data = json.loads(page.read())
    photo_url = page_data["picture"]["data"]["url"]
    user_photos[user["id"]] = [user["name"], photo_url]

fp = open("user_photos.json", "w")
fp.write(json.dumps(user_photos))

次のエラーが表示されます。

Traceback (most recent call last):
 File "C:\test.py", line 11, in <module>
    for user in data["data"]:
KeyError: 'data'
>>> 

誰かがそれを修正する方法やどこに助けを求めるかを説明してもらえますか?

編集: これは、text2.txt のデータがどのように見えるかです:

{
  "id": "1390694364479028", 
  "members": {
    "data": [
      {
        "name": "Patryk Wiśniewski", 
        "administrator": false, 
        "id": "321297624692717"
      }, 
      {
        "name": "Backed PL", 
        "administrator": false, 
        "id": "1440205746235525"
      }, 

など、他のグループ メンバーの情報とともに

4

3 に答える 3

1

おそらく、test2.txt に "data" の JSON フィールドがないだけです。

于 2014-05-31T19:12:56.723 に答える
1

KeyErrordict オブジェクトにそのようなキーがないことを意味します。したがって、スクリプトによると、このような JSON データ構造がファイルに含まれていないことを意味します。

{"data": {"id": 10000}, {"id": 20000}, {"id": 30000}}

test2.txtの内容または出力を投稿していただけると助かりますprint(data)

編集: text2.txt ファイルによると、プログラム フローは次のようになります。

for user in data["members"]["data"]:
    print user
    page = urlopen("http://graph.facebook.com/" + user["id"] + "?fields=picture")
    page_data = json.loads(page.read())
    photo_url = page_data["picture"]["data"]["url"]
    user_photos[user["id"]] = [user["name"], photo_url]

data["data"]に変更するだけでdata["members"]["data"]、スクリプトが機能します。

于 2014-05-31T19:10:55.957 に答える
0

ドキュメントを見ると、txt ファイル バーの詳細に次のようにまったく同じ構造が必要です。

{
  "data": [
    {
      "name": "Arushi Jain", 
      "administrator": false, 
      "id": "100000582289046"
    }, 
    {
      "name": "Ajay Yadav", 
      "administrator": false, 
      "id": "100004213058283"
    }, 
    and so on ........

  ], 
  "paging": {
    "next": "https://graph.facebook.com/114462201948585/members?limit=5000&offset=5000&__after_id=712305377"
  }
}

{

 {
  "data": [                    # how yours should look
   {
        "name": "Patryk Wiśniewski",
        "administrator": false,
        "id": "321297624692717"
      },
      {
        "name": "Patryk Kurowski",
        "administrator": false,
        "id": "1429534777317507"
      },
      {
        "name": "Jan Konieczny",
        "administrator": false,
        "id": "852450774783365"
      }

  ], 
  "paging": {
    "next": "https://graph.facebook.com/114462201948585/members?limit=5000&offset=5000&__after_id=712305377"
  }
}

これはループで実行される最初のものであるため、正確に一致しない場合、エラーの場合と同様に失敗します。

于 2014-05-31T20:21:32.860 に答える