我正在尝试使用python代码保存一个具有惟一名称的.pdf文件。
例如,我有一个名为"boringfile.pdf“的文件,但需要将该文件重命名为唯一的雇员名"max_steel.pdf”。
我查看了os.rename、os.join、uuid、pdfrw和reportlabs的解决方案。
有谁可以帮我?
编辑:
为了进一步澄清,数据库是使用sqlite3使用python3.6创建的。示例数据库看起来类似于以下内容:
employee_id first_name last_name
123456 Frank Sinatra
738323 Johnny Cash
842028 Bon Jovi因此,假设我刚刚创建了邦乔维的员工,通过从数据库中提取数据并将其输入到我的报告中来处理文书工作。我的报告目前有标签"boringfile.pdf“,但当保存完成的文件时,我需要它读取"bon_jovi.pdf”。
发布于 2019-01-30 16:35:28
不确定为什么要使用SQLite创建CSV文件,然后解析CSV文件。这似乎有些多余。您可以直接这样做(没有错误检查,只是概念):
import sqlite3
# Connect to database
db = sqlite3.connect('sample.db')
# Extract person's full name
sql = "SELECT * FROM profiles WHERE last_name=? OR first_name=? OR employee_id=?"
c = db.cursor()
data = c.execute(sql, ('Jovi','Bon','842028'))
# Rename PDF
for row in c:
print('{0} : {1}, {2}'.format(row[0], row[1], row[2]))
PDFname = row[1] + '_' + row[0] + '.pdf'
os.rename('boringfile.pdf', PDFname)发布于 2019-01-30 13:48:57
我通过咨询各种网站和打电话给几个人,找到了一个解决方案。创建sqlite3数据库后,我调用所需的信息,并将其转换为一行.csv。我使用csv.reader读取数据,并使用os.rename生成唯一的名称,非常类似于上面Mark的建议。
def dataexport(self, *args, **kwargs):
sql = "SELECT * FROM profiles WHERE last_name=? OR first_name=? OR employee_id=?"
data = c.execute(sql, (self.last_se.get(), self.first_se.get(),
self.employeeid_se.get(), )) #this part is meant to grab
#the user input from a gui I made to make form filling
#simple
with open('output.csv', 'w') as f:
writer = csv.writer(f)
writer.writerows(data)
def renamefile(self, *args, **kwargs):
mycsv = csv.reader(open('output.csv'))
for row in mycsv:
employee_id = row[0]
first_name = row[1]
last_name = row[2]
os.rename('boringfile.pdf', first_name + '_' + last_name + '.pdf')output.csv
运行第一个函数之后,.csv文件应该是一行:
842028, Bon, Jovi
https://stackoverflow.com/questions/54410439
复制相似问题