# PDF merging program

I made a program that merges all the PDFs in a certain map. The program is made so it merges only one sided PDFs. I would like your opinion on the code and how can it be improved.

while True:
print()
try:
map_name = input("Name of the map where PDFs are saved: ")    # map where your documents are
initial_path = r"C:\Users\...\Scanned Documents"              # the initial path where all your documents get saved
path = os.path.join(initial_path, map_name)
os.chdir(path)
break

except (OSError, FileNotFoundError):
print("There is no map with that name!")
continue

PDF_name_input = input("Name of your merged PDF: ")
PDF_name = "{0}.pdf".format(PDF_name_input)

PDF_arr = []
for file in os.listdir("."):

if file.endswith("pdf"):
PDF_arr.append(file)

merger = PyPDF2.PdfFileMerger()

for element in PDF_sez:
merger.append(open(element, "rb"))

with open(PDF_name, "wb") as fout:
merger.write(fout)


# List Comprehension

PDF_arr can be made into a list with one line

PDF_arr = [file for file in os.listdir(".") if file.endswith("pdf")]


# f-strings

Personally, I would use f"" when formatting variables into strings. It allows you to directly place variables without having to call the .format() function on them.

PDF_name = f"{input('Name of your merged PDF: ')}.pdf"


I also moved the input into the string, saving line count. It's also another quirk f"" has.

• Downvoter, please explain why you downvoted so I may improve my answer. – Linny Mar 17 at 23:18
• I didn't downvote, but I would really avoid anything more complex than variable references in an f-string. – l0b0 Mar 18 at 2:22
• Isn't this just low hanging fruit. I could get more from a linter. Also pushing f-strings when they're really new is just obnoxious to people that have to support more than one version of Python. – Peilonrayz Mar 18 at 10:46