首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用唯一的文件名python重命名文件

如何用唯一的文件名python重命名文件
EN

Stack Overflow用户
提问于 2019-01-28 21:19:23
回答 2查看 337关注 0票数 1

我正在尝试使用python代码保存一个具有惟一名称的.pdf文件。

例如,我有一个名为"boringfile.pdf“的文件,但需要将该文件重命名为唯一的雇员名"max_steel.pdf”。

我查看了os.renameos.joinuuidpdfrwreportlabs的解决方案。

有谁可以帮我?

编辑:

为了进一步澄清,数据库是使用sqlite3使用python3.6创建的。示例数据库看起来类似于以下内容:

代码语言:javascript
运行
复制
employee_id     first_name    last_name
123456          Frank         Sinatra
738323          Johnny        Cash
842028          Bon           Jovi

因此,假设我刚刚创建了邦乔维的员工,通过从数据库中提取数据并将其输入到我的报告中来处理文书工作。我的报告目前有标签"boringfile.pdf“,但当保存完成的文件时,我需要它读取"bon_jovi.pdf”。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-30 16:35:28

不确定为什么要使用SQLite创建CSV文件,然后解析CSV文件。这似乎有些多余。您可以直接这样做(没有错误检查,只是概念):

代码语言:javascript
运行
复制
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)
票数 2
EN

Stack Overflow用户

发布于 2019-01-30 13:48:57

我通过咨询各种网站和打电话给几个人,找到了一个解决方案。创建sqlite3数据库后,我调用所需的信息,并将其转换为一行.csv。我使用csv.reader读取数据,并使用os.rename生成唯一的名称,非常类似于上面Mark的建议。

代码语言:javascript
运行
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54410439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档