I want to iterate through directories to find PDF files but I also want to be able to profile the file path without iterating through directories. So this is what I wrote:
rootdir = "C:\Users\user\Downloads\Final.pdf" for subdir, dirs, files in os.walk(rootdir): for file in files: path = os.path.join(subdir, file) safe_text = "" print(path) with pdfplumber.open(str(path)) as pdf: print("this is a PDF file")
Advertisement
Answer
Use os.path.isdir
/os.path.isfile
to check if the path is a valid directory/file. If it’s a directory – walk it with a for
loop, otherwise process it as file. It may help to extract the logic to a function so you don’t have to repeat yourself.
import os.path def process(path): """Process a single PDF file.""" safe_text = "" print(path) with pdfplumber.open(str(path)) as pdf: print("this is a PDF file") path = "C:\Users\user\Downloads\Final.pdf" if os.path.isdir(path): # it's a directory - walk it for subdir, dirs, files in os.walk(path): for file in files: subpath = os.path.join(subdir, file) process(subpath) elif os.path.isfile(path): # it's a single file - process it process(path) else: raise FileNotFoundError(path)