【发布时间】:2020-01-06 21:28:19
【问题描述】:
我有一个 python 脚本,可以获取 youtube 频道的播放列表列表。 然后我提取该频道中的播放列表 ID。 我创建了一个全局数组变量来存储频道中的播放列表 ID。
这是我的代码:
import urllib
import ast
import os
from io import StringIO
import json
import pprint
import ast
url = "https://www.googleapis.com/youtube/v3/playlists?part=snippet&channelId=UC_ANPr8IkWibKlKhmi_-H1g&key=<my YT API key>"
playlist_array = []
videos_array = []
response = urllib.urlopen(url)
#data = ast.literal_eval(json.dumps(response))
data = json.loads(response.read())
print data
pprint.pprint(data['items'])
for item in data['items']:
print(
"Title: {}\nid: {}\nurl: {}\n".format(item['snippet']['title'], item['id'], item['snippet']['thumbnails']['default']['url']))
for item in data['items']:
playlist_id = (json.dumps(item['id'])).strip('"')
playlist_array = [playlist_id]
print playlist_array[-1]
print playlist_array[-1]
# now iterate list of playlists to extract the videos in each playlist
##### TO DO Code right here #########
当我运行代码时,当我在 for 循环中打印变量 inside 时,我可以看到频道的所有播放列表 ID。当我在 for 循环 outside 打印数组变量的列表值时(我需要在 for 循环之外访问它,以便获取该特定播放列表的视频 ID)。
Pycharm 的输出: PLejO9z7yhQOxjONeDVWaAy3kX3tEcImCR PLejO9z7yhQOwt7OKSMVLdAe4jeYDpZNJC PLejO9z7yhQOzJ068ZMLd0Zub_FOrGJ82y PLejO9z7yhQOx8ZrJYJ3o5zckygwvtUb1R PLejO9z7yhQOxx6XqB6DLvQd0-IDpb299H PLejO9z7yhQOxx6XqB6DLvQd0-IDpb299H
如何使我的脚本可以全局访问数组变量?
谢谢。
进程以退出代码 0 结束
【问题讨论】:
-
请注意,您使用的不是数组,而是 lists。在任何情况下,您都会在每次迭代中为
playlist_array = [playlist_id]分配一个新列表,其中包含一个元素,因此当然,循环中只有最后一个元素。您需要使用.append。坦率地说,这是非常基本的。