Найти - Пользователи
Полная версия: Помогите со скриптом на python3
Начало » Python для новичков » Помогите со скриптом на python3
1
sapanovskiy
python3:
Используйте https://openweathermap.org/api, os, запросы, argparser, smtplib, чтобы создать инструмент командной строки python для отображения текущей погоды.
Этот инструмент должен использовать 3 параметра: city, apikeyfile и необязательные «электронные письма» - список через запятую. (Используйте .split в python для разделения)
Если «электронные письма» существуют - скрипт должен проверить и прочитать имя пользователя и пароль Gmail из переменных среды GMAIL_USER, GMAIL_PASSWORD и использовать их для отправки электронного письма с текущей температурой, давлением, влажностью всем получателям из списка электронных писем.
В противном случае выведите эти данные на консоль.
apikeyfile - путь к файлу с ключом API openweathermap.
sapanovskiy
у меня большие проблемы с пониманием как работает argparse

import os, sys
import argparse
import requests
import smtplib
import ssl
import getpass



port = 587 # For starttls
smtp_server = “smtp.gmail.com
#sender_email = input(“Enter your email:”) #“sapanovskiy.test@gmail.com
#receiver_email = “sapanovskiy@gmail.com
#password = getpass.getpass('Password:')

parser = argparse.ArgumentParser()
parser.add_argument('city', type=str, help='Input city name')
parser.add_argument('apikeyfile', type=argparse.FileType('r'), help='Input apikeyfile name')

args = parser.parse_args()
if args.city:
city = args.city
print(“City: ”+ city + “.”)

if args.apikeyfile:
api_key = args.apikeyfile
print (“Api: ”+ apikeyfile + “.”)


# password = getpass.getpass('Password:')



base_url = r"http://api.openweathermap.org/data/2.5/weather?
# city = input(”Enter City Name = “)
message = f”Subject: Weather forecast for the city - {city}\n\n“
comp_url = base_url + ”appid=“ + api_key + ”&q=" + city
response = requests.get(comp_url)
j = response.json()
if j != “404”:
y = j
temp = round(int(y)-273)
pressure = y
humidity = y
message = message + f“Temperature (in Celsius unit) = {temp}\nAtmospheric pressure (in hPa unit) = {pressure}\nHumidity (in percentage) = {humidity} ”
print(message)
else:
print(“City Not Found”)

context = ssl.create_default_context()
with smtplib.SMTP(smtp_server, port) as server:
server.ehlo() # Can be omitted
server.starttls(context=context)
server.ehlo() # Can be omitted
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB