Прежде всего, это не домашнее задание, это для самостоятельного обучения, я аспирант. Я новичок в Python и matplotlib, и я пытаюсь дать себе крутой курс, потому что мне понадобится matplotlib, чтобы заговорить некоторые из моих собственных работ довольно скоро. В настоящее время я пытаюсь немного узнать о них, следуя инструкциям Youtube, и я, похоже, застрял. Мне нужно выяснить, почему этот код не будет работать для меня, потому что мне нужно, чтобы он продолжался в остальных учебниках.Python 3.5.2 загрузка данных из интернета
Этот код был скопирован непосредственно из учебника, за которым я слежу, но он не работает для меня, но работает для создателя видео. Я повторно проверил синтаксис бесчисленное количество раз против того, что было в видео, а также попробовал некоторые из решений, которые работали для людей, имеющих аналогичные проблемы в разделе комментариев.
Кажется, что различия исходят от версий python от людей. В настоящее время Mine Python 3.5.2. Код должен вытащить данные о запасах из Интернета, преобразовать время в дружественный python формат и затем нарисовать график. Кто-нибудь знает, как это сделать для моей версии python, чтобы я мог продолжить свою первоначальную задачу, чтобы узнать о заговоре?
import matplotlib.pyplot as plt
import numpy as np
import urllib
import matplotlib.dates as mdates
def bytespdate2num(fmt, encoding='utf-8'):
strconverter = mdates.strpdate2num(fmt)
def bytesconverter(b):
s = b.decode(encoding)
return strconverter(s)
return bytesconverter
def graph_data(stock):
stock_price_url = 'http://chartapi.finance.yahoo.com/*instrument/1.0/'+stock+'/chartdata;type=quote;range=10y/csv'
source_code = urllib.urlopen(stock_price_url).read().decode()
stock_data = []
split_source = source_code.split('\n')
for line in split_source:
split_line = line.split(',')
if len(split_line) == 6:
if 'values' not in line:
stock_data.append(line)
date, closep, highp, lowp, openp, volume = np.loadtxt(stock_data, delimiter =',', unpack=True, converters={0: bytespdate2num('%Y%m%d')})
plt.plot_date(date, closep)
plt.xlabel('Date')
plt.ylabel('Price')
plt.title('Load from file\nInteresting graph')
plt.legend()
plt.show()
graph_data('TSLA')
Который производит следующее сообщение об ошибке:
Traceback (most recent call last):
File "load_from_internet.py", line 35, in <module>
graph_data('TSLA')
File "load_from_internet.py", line 16, in graph_data
source_code = urllib.request.urlopen(stock_price_url).read().decode()
AttributeError: module'urllib' has no attribute 'urlopen'
Примеры попыток исправить проблему:
изменения импорта URLLIB в
import urllib.request
Это небольшое изменение, по-видимому работал для других с разными версиями Python, но не для меня. Я получаю другую ошибку с urlib.request:
Traceback (most recent call last):
File "load_from_internet.py", line 35, in <module>
graph_data('TSLA')
File "load_from_internet.py", line 16, in graph_data
source_code = urllib.request.urlopen(stock_price_url).read().decode()
File "C:\Users\myfiles\Anaconda3\lib\urllib\request.py", line 163, in urlopen
File "C:\Users\myfiles\Anaconda3\lib\urllib\request.py", line 472, in open
File "C:\Users\myfiles\Anaconda3\lib\urllib\request.py", line 582, in http_response
File "C:\Users\myfiles\Anaconda3\lib\urllib\request.py", line 444, in _call_chain
File "C:\Users\myfiles\Anaconda3\lib\urllib\request.py", line 590, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 404: Not Found
PS весь смысл учебника является тянуть данные о запасах из Интернета и построить его, а затем дополнительные учебники для настройки графика он производит (Который что я хочу узнать). Преобразование даты больше в стороне, и преподаватель говорит, что, если вы не понимаете, что происходит с конверсией, это хорошо на данный момент - но проблема в том, что не понимание того, что происходит с конверсией, m не в состоянии это исправить!
Так что любая помощь была бы действительно оценена. Спасибо большое!
* «код не будет работать» *, * «он не для меня» * Так что же происходит? Вы получили сообщение об ошибке? Если это так, пожалуйста, покажите сообщение об ошибке * complete *. Вызывает ли он неожиданный результат? Если да, покажите или объясните результат и объясните, что вы ожидали. –
Вы говорите, что вы изменили 'import urllib' на' import urllib.request', но также и что вы изменили 'urllib.request.urlopen' на' urllib.urlopen' в коде. Это ошибка при копировании? Кроме того, если код не работает, * какая ошибка * вы получаете или что происходит вместо ожидаемого результата? – Adalee
Как я уже сказал, я новичок в Python, и по какой-то причине я не вижу ошибки. Когда я дважды нажимаю на мой скрипт, чтобы запустить его, приглашение открывается на мгновение, а затем слишком быстро закрывается, чтобы я мог прочитать какую-либо ошибку. Так что да, «мне это не удается». Если бы я смог увидеть ошибку, я бы разместил ее. Это не дает никакого результата. Я делаю вывод данных из файлов до сих пор без проблем. Результатом должен быть график с датами по оси x и ценой закрытия акций по оси y. Экран подсказки/ошибки открывается в течение секунды секунды, недостаточно долго, чтобы прочитать ошибку и снова закрывается. – beeeepmeeeep