如何从tempfile对象获取文件名?csv临时文件写入上传问题
当然可以引用临时文件的文件名!
完全没问题,而且从tempfile对象中提取文件名非常简单,针对你的场景(用csv.writer写入临时文件后用于数据库上传),我给你具体的解决方案:
核心方法:利用临时文件对象的name属性
Python的tempfile模块中,像NamedTemporaryFile这类创建带命名临时文件的对象,本身就带有name属性,直接调用就能拿到字符串格式的文件名,完全符合你程序中需要传入字符串的要求。
实操代码示例
import tempfile import csv # 创建临时文件时注意设置delete=False(默认关闭后自动删除,要保留到上传完成) with tempfile.NamedTemporaryFile(mode='w', delete=False, newline='', encoding='utf-8') as temp_fp: # 直接通过.name获取文件名字符串 temp_file_path = temp_fp.name print(f"临时文件路径:{temp_file_path}") # 用csv.writer写入内容 csv_writer = csv.writer(temp_fp) csv_writer.writerow(['id', 'name', 'age']) csv_writer.writerow(['1', 'Alice', '25']) csv_writer.writerow(['2', 'Bob', '30']) # 👉 这里可以添加你的数据库上传逻辑,直接传temp_file_path即可 # upload_to_database(temp_file_path) # 上传完成后手动删除临时文件 import os os.unlink(temp_file_path)
关键细节说明
delete=False:这个参数一定要加!默认情况下NamedTemporaryFile在文件对象关闭后会自动删除文件,而你需要保留文件到上传完成,所以必须显式设置delete=False,之后用os.unlink()手动删除。- 其他临时文件类型:如果你用的是
SpooledTemporaryFile,同样可以通过.name获取文件名;如果是用tempfile.mkdtemp()创建临时目录再自己创建文件,那文件名就是你自己定义的路径拼接结果。
这样你就能轻松拿到临时文件的字符串路径,满足程序的参数要求啦!
内容的提问来源于stack exchange,提问作者mnjt
相关产品推荐
相关产品推荐

