Found a solution (assuming the file path is at /files/subfolder/):
import os
f_url = 'frontend/public/files/subfolder/' + serial_num + '.pdf'
doc = frappe.new_doc('File')
f_name = f_url.split("/")[-1]
doc.file_name = f_name
file_url = "/files/subfolder/" + f_name
doc.file_url = file_url
doc.insert()
name = frappe.db.get_value("File", {"file_name":f_name},'name')
frappe.db.set_value("File", name,'file_url','/files/subfolder/' + f_name)
frappe.db.set_value('Sales', serial_num,'attached_file', file_url)
frappe.db.commit()
os.remove(f_url.replace("/subfolder",""))
frappe.sendmail(
recipients=[recipient],
sender="<my@email.com>",
subject=subject,
message=mail_text,
attachments=[{'file_url': 'subfolder/' + serial_num + '.pdf'}]
)