Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

240
Views
Mostrar notificación de varias líneas usando notificar-enviar en python

Tengo datos meteorológicos (json) de api. Quiero mostrar solo una parte que puse en un diccionario:

 vals = { 'temperature': 34.41, 'summary': 'Clear', 'ozone': 249.95, 'humidity': 0.32, 'precipType': 'rain', 'pressure': 1010.05, 'dewPoint': 15.31, 'time': 1456393033, 'windSpeed': 2.5, 'apparentTemperature': 34.23, 'icon': 'clear-day', 'windBearing': 96, 'precipProbability': 0.01, 'cloudCover': 0.17, 'precipIntensity': 0.0203 }

Uso este código para mostrar la notificación en el formato de 'clave: valor'. El código sigue:

 for i in sorted(vals.keys()): if i == 'time': vals[i] = datetime.datetime.fromtimestamp(int(vals[i])) #unix timestamp to readble format if i == 'summary': continue #Put it in the notif's title not body msg = msg + str(i).strip() + ':\ ' +str(vals[i]).strip() + '\n' msg = 'notify-send -u critical ' + vals['summary'] + ' ' + msg os.system(msg)

La salida muestra una notificación con el título (en este caso, el resumen- 'Borrar') y el primer par clave:valor, es decir, temperatura aparente: 34.23 y luego el terminal muestra el siguiente error:

 sh: 2: cloudCover: 0.17: not found sh: 3: dewPoint: 15.31: not found sh: 4: humidity: 0.32: not found sh: 5: icon: clear-day: not found sh: 6: ozone: 249.95: not found sh: 7: precipIntensity: 0.0203: not found sh: 8: precipProbability: 0.01: not found sh: 9: precipType: rain: not found sh: 10: pressure: 1010.05: not found sh: 11: temperature: 34.41: not found sh: 12: time: 2016-02-25: not found sh: 13: windBearing: 96: not found sh: 14: windSpeed: 2.5: not found

¿Cuál es el error y cómo lo corrijo?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

El error está en msg = 'notify-send -u critical ' + vals['summary'] + ' ' + msg . Tu sh piensa que los argumentos vals['summary'] y msg son comandos para ejecutar por sh . Ocurre debido a los espacios en la salida de su msg (no le estoy diciendo acerca de la confusión relacionada con los mismos nombres de sus msg de mensaje).

Puede evitarlo usando comillas ( \" ) en sus datos de salida. Así que msg puede verse como

 msg = 'notify-send -u critical \"%s %s\"' %% (vals['summary'], msg)

o

 msg = 'notify-send -u critical ' + '\"' + vals['summary'] + ' ' + msg + '\"'

UPD No entiendo la pregunta principal anterior, entonces:

Hay algunos problemas al usar las secuencias de comandos notify-send de varias líneas. Creo que la forma más fácil es usar echo -e en su secuencia de comandos, por ejemplo:

 notify-send "Title" "$(echo -e "This is the first line.\nAnd this is the second.")"

Puede intentar usar este pensamiento en su guión, pero tiene que hacer algunos trucos con comillas y caracteres de control.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!