I have this code that send files to a ftp server using try and except.
def sendFiles():
#send a PDF
try:
ftp.cwd('/pdf')
pdf = "file1.pdf" # send the file
with open(pdf, "rb") as file:
ftp.storbinary(f"STOR {pdf}", file)
except:
print(colored(255, 0, 0, f"ERROR !!!!!!!! {pdf} was not sent!"))
#send new POPUP IMAGE
try:
ftp.cwd('/image/popup')
popup = "popup1.jpg" # send the file
with open(popup, "rb") as file:
ftp.storbinary(f"STOR {popup}", file)
except:
print(colored(255, 0, 0, f"ERRO !!!!!!!! {popup} was not sent!"))
I need: if there's no except errors, i got a print "Files sent with success!"
I tryed this at the end but without success. It is always showing me "Files was not sent!, even i dont get a except error:
if sendFiles():
print("\nFiles sent with success!")
else:
print("\nFiles was not sent!")
Any idea?
CodePudding user response:
You're not returning any value from sendFiles so that defaults to a value of None which is the same as False in an if expression. Change sendFiles to return a boolean dependent on whether you succeed or not. For example:
def sendFiles() -> bool:
sentOK = True
#send a PDF
try:
ftp.cwd('/pdf')
pdf = "file1.pdf" # send the file
with open(pdf, "rb") as file:
ftp.storbinary(f"STOR {pdf}", file)
except:
print(colored(255, 0, 0, f"ERROR !!!!!!!! {pdf} was not sent!"))
sentOK = False
#send new POPUP IMAGE
try:
ftp.cwd('/image/popup')
popup = "popup1.jpg" # send the file
with open(popup, "rb") as file:
ftp.storbinary(f"STOR {popup}", file)
except:
print(colored(255, 0, 0, f"ERRO !!!!!!!! {popup} was not sent!"))
sentOK = False
return sentOK
CodePudding user response:
if sendFiles():
So you are getting the bool value of a function returning None, right?
if sendFiles():
print("\nFiles sent with success!")
else:
print("\nFiles was not sent!")
This will always take you to the else branch, since if "evaluates" None as False.
I need: if there's no except errors, i got a print "Files sent with success!"
You can try a return approach...
def sendFiles() -> bool:
try:
...
except:
return False
...or a bool approach
def sendFiles() -> bool:
result: bool = True
try:
...
except:
result = False
return result
