LaPa
Profilo di
Nome | LaPa |
---|---|
Indirizzo email | n/a |
Messaggi | 4 |
-
- 2019-02-03 10:02:10
- [Python] [Problema] imapclient sintassi di metodo serch()
- Forum >> Programmazione Python >> Web e Reti
- Buona sera a tutti!
sto usando con Python 2.7 il modulo imapclient. Il mio scopo è questo: Se ricevo un messaggio con un determinato oggetto invio in automatico una mail a chi me lo ha inviato (ad esempio: oggetto della mail "info", allora invio una mail con informazioni.
Riesco a collegarmi al server
ma in questo punto
UIDs = server.search(['SUBJECT Info'])
print UIDs
la shell risponde:
Traceback (most recent call last):
File "/mnt/usbhd/RPIProject/Prove/ReportOnRequest.py", line 291, in <module>
UIDs = server.search(['SUBJECT Info'])
File "/usr/local/lib/python2.7/dist-packages/imapclient/imapclient.py", line 956, in search
return self._search(criteria, charset)
File "/usr/local/lib/python2.7/dist-packages/imapclient/imapclient.py", line 995, in _search
criteria='"%s"' % criteria if not isinstance(criteria, list) else criteria
InvalidCriteriaError: 'Could not parse command'
This error may have been caused by a syntax error in the criteria: ['SUBJECT Info']
Please refer to the documentation for more information about search criteria syntax..
https://imapclient.readthedocs.io/en/master/#imapclient.IMAPClient.search
>>>
Sapreste dirmi come eliminare il problema?
grazie per l'attenzione
Saluti
LaPa
-
- 2018-11-17 16:35:06
- Re: [risolto] non riesco a inviare file su Altervista con ftplib
- Forum >> Principianti
- Forse questa volta è veramente tutto chiaro!
Dopo alcune prove ho capito di più riguardo all'errore che facevo
Questo è il pezzo di codice che mi dava errore quando non mi funzionava.
session.storbinary("STOR " + nomefile, open (nomefile, "rb"), 1024)
Dopo "STOR ", se non ho capito male, si indica come deve essere nominato il file su Altervista. Dunque se vogliamo nominarlo con un nome tipo Test.txt allora semplicemente scriveremo
"STOR Test.txt"
al posto di
"STOR " +nomefile
Se invece il nome del file che deve apparire su Altervista è una variabile, allora va bene quella sintassi
"STOR " +nomefile
.
Il mio codice non funzionava perché indicavo con un' unica variabile (nomefile) 2 cose diverse:
1) dove è posizionato nel computer e come si chiama il file che si deve spostare su Altervista
2) come deve essere nominato il file una volta inviato su Altervista e siccome nomefile era una variabile che conteneva oltre al nome del file anche l'indirizzo assoluto allora mi dava errore.
Pertanto se il voglio spostare il file che sta in home/pi e si chiama test.txt e voglio che questo venga rinominato con una variabile e non con un nome fisso devo creare 2 variabili, ad esempio: nomefile che indica il file da spostare e nomefile1 che rinomina il file su altervista. In quel caso il codice sarà:
import os import ftplib session=ftplib.FTP('rpiplant.altervista.org', 'rpiplant','********') nomefile="home/pi/test.txt" nomefile1="test2.txt" session.storbinary("STOR " + nomefile1, open (nomefile, "rb"), 1024) session.quit()
Funziona!!!
Capire bene l'errore è stata una soddisfazione!!!
LaPa
--- Ultima modifica di LaPa in data 2018-11-17 23:28:51 ---
-
- 2018-11-15 23:12:26
- Re: [problema] non riesco a inviare file su Altervista con ftplib
- Forum >> Principianti
- Carissimi dopo tanto peregrinare ho trovato la risposta: facevo un errore di sintassi. Dopo STOR non dovevo concatenare, pertanto la sintassi corretta è:
import os import ftplib session=ftplib.FTP('rpiplant.altervista.org','rpiplant','**********') nomefile="/home/pi/test.txt" session.storbinary("STOR nomefile", open (nomefile, "rb"), 1024)
In questa maniera mi ritrovo il file test.txt col nome nomefile su altervista.
se voglio chiamarlo test.txt la sintassi diventa:
import os import ftplib session=ftplib.FTP('rpiplant.altervista.org','rpiplant','**********') nomefile="/home/pi/test.txt" session.storbinary("STOR test.txt", open (nomefile, "rb"), 1024)
Saluti
LaPa
--- Ultima modifica di LaPa in data 2018-11-16 15:58:23 ---
--- Ultima modifica di LaPa in data 2018-11-16 16:00:07 ---
-
- 2018-11-03 14:32:43
- [risolto] non riesco a inviare file su Altervista con ftplib
- Forum >> Principianti
- Salve a tutti.
non riesco ad inviare un file di testo (creato per prova) via ftplib su un sito di altervista.
il codice usato è il seguente:
import os
import ftplib
session=ftplib.FTP('rpiplant.altervista.org','rpiplant','**********')
nomefile="/home/pi/test.txt"
session.storbinary("STOR " + nomefile, open (nomefile, "rb"), 1024)
Copy
L'errore è
Traceback (most recent call last):
File "/mnt/usbhd/prove/ProvaFTP.py", line 58, in <module>
session.storbinary("STOR " + nomefile, open (nomefile, "rb"), 1024)
File "/usr/lib/python3.4/ftplib.py", line 503, in storbinary
with self.transfercmd(cmd, rest) as conn:
File "/usr/lib/python3.4/ftplib.py", line 398, in transfercmd
return self.ntransfercmd(cmd, rest)0
File "/usr/lib/python3.4/ftplib.py", line 364, in ntransfercmd
resp = self.sendcmd(cmd)
File "/usr/lib/python3.4/ftplib.py", line 272, in sendcmd
return self.getresp()
File "/usr/lib/python3.4/ftplib.py", line 245, in getresp
raise error_perm(resp)
ftplib.error_perm: 553 Impossibile aprire quel file: File o directory non esistente
Copy
Ho controllato e il file è nella posizione giusta e possiede tutti i permessi: "-RWXRWXRWX"
con un file di bash riesco a mandare il file con il seguente codice:
#!/bin/bash
/usr/bin/ftp -inv rpiplant.altervista.org <<ENDFTP
user rpiplant *********
bin
#provo a inviare un file di testo in pi/home
lcd /home/pi
put test.txt test1.txt
ho provato anche a sostituire session=ftplib.FTP('rpiplant.altervista.org','rpiplant','**********') con session=ftplib.FTP('ftp://rpiplant.altervista.org','rpiplant','**********')
e mi dà il seguente errore:
Traceback (most recent call last):
File "/mnt/usbhd/prove/ProvaFTP.py", line 51, in <module>
session=ftplib.FTP('ftp://rpiplant.altervista.org','rpiplant','aPQq7jNJpWzS')
File "/usr/lib/python2.7/ftplib.py", line 120, in __init__
self.connect(host)
File "/usr/lib/python2.7/ftplib.py", line 135, in connect
self.sock = socket.create_connection((self.host, self.port), self.timeout)
File "/usr/lib/python2.7/socket.py", line 553, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
gaierror: [Errno -2] Name or service not known
Dove sbaglio?
Grazie per l'attenzione
Un saluto
LaPa
--- Ultima modifica di LaPa in data 2018-11-15 23:12:56 ---