2つのメソッドでクラスを構築しようとしています:ファイルがエラーなしでダウンロードされたかどうかを確認する最初のメソッドと、 。このコードは私が望むように動作しますが、ファイルを2回ダウンロードします。 2番目の方法で最初のメソッドの変数r
を使用し、ファイルをもう一度ダウンロードしないでください。python 3.一つのメソッドの変数を同じクラス内の別のメソッドで使う
電子メールを送信する機能はうまく動作します。
from collections import OrderedDict
import requests
class checkGet_and_loads:
# check if the get is successfull or not
def get(self, url, file):
# download the file
self.r = requests.get(url)
# check if file was downloaded with no errors
if self.r.status_code != 200:
# send email to gmail
# emailBody = 'Sending email. Error with downloading the ' + file + ' file.'
# send_email(fromaddr = emailFrom, pwd = password, toaddr = emailTo, Subject = emailSubject, body = emailBody)
print('Error: Unexpected response {}'.format(self.r))
else:
print(' Not sending email. No errors found when downloading the ' + file + ' file.')
# loads the json file
def loads(self, url, file):
# download the file
self.r = requests.get(url)
# loads the json file
self.to_loads = json.loads(self.r.text, object_pairs_hook = OrderedDict)
return(self.to_loads)
# Check if test file is downloaded without errors. If errors found while downloading then send email; otherwise, don't email
# link for test file
url = 'http://mysafeinfo.com/api/data?list=englishmonarchs&format=json'
file = 'test'
checkGet_and_loads().get(url, file)
test_json = checkGet_and_loads().loads(url, file)
ので、第2の方法は、次のようになります。
# loads the json file
def loads(self):
# loads the json file
to_loads = json.loads(self.r.text, object_pairs_hook = OrderedDict)
return(to_loads)
をしかし、私はこのエラーを取得する:
AttributeError: 'checkGet_and_loads' object has no attribute 'r'
私はSOと他のサイト上のすべてのソリューションを試してみましたが、ありませんでしたそれを把握してください...
を読むことをお勧めします。ありがとう。 ちょっとした編集: 'test_json = data_source.loads(url、file)'の代わりに 'test_json = data_source.loads()'にする必要があります。 – nick
@nick一定。 – m0nhawk