Continue program even after assert fails

Question:

I want to continue even after the assert statement fails. Instead of saying "File not found" I would like to ignore it and continue my program. I am unable to figure out the syntax.

Overview of the script and problem faced :
This script is used for downloading pdf from urls which were written in a txt file. I had used assert to stop the program if the file wasn’t found. It worked fine when all the urls in that txt file were working. The problem arose when there was a link which was dead and I didn’t want the program to stop but instead continue to next link.

assert os.path.exists(of), "File not found at, " +str(of)

Program snippet :

for line in url_file:
  stripped_line = line.split(',')
  list_of_urls.append(stripped_line[2]+stripped_line[1])
  driver.get(stripped_line[2]+stripped_line[1])
  time.sleep(2)
  
  of = download_dir+"/"+stripped_line[3]+".pdf"
  fn = download_dir+"/"+stripped_line[0]+".pdf"

  try: 
    assert os.path.exists(of), "File not found at, " +str(of)
  except AssertionError: 
    pass

  move(of, fn)
  fns.append(stripped_line[0])
  ofns.append(stripped_line[3])
  status_file.write(stripped_line[0]+",File Downloadedn")

url_file.close()
status_file.close()
driver.quit()
Asked By: heisenberg3008

||

Answers:

If you really want to use assert you can just us a try: except: block to catch the error thrown if the assertion is not True

try: 
    assert os.path.exists(of), "File not found at, " +str(of)
except AssertionError: 
    pass

However if your goal is just to print an error message if the file does not exist you can do:

if not os.path.exists(of):
    print("File not found at, " +str(of))
Answered By: theophile
    if os.path.exists(of):
        move(of, fn)
        fns.append(stripped_line[0])
        ofns.append(stripped_line[3])
 
Answered By: heisenberg3008
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.