我正在我的 Web2Py 代码中创建一个文件,如下所示:
tmpPckUpFile = open('FileContent.txt', 'w+')
我补充
tmpPckUpFile.write("some stuff")
我关闭了文件
tmpPckUpFile.close()
然后尝试更新数据库中的行
db(db.project_pickup_approvals.id==request.args(0)).update(PickupContent = tmpPckUpFile)
此时,我通常会收到一个错误: 对已关闭文件的 I/O 操作
所以我尝试做的是删除 close((,现在文件被添加到数据库中,但没有写入任何内容。我得到一个空白文件。
问:如何写入文件并将其放入数据库?
如果不想
在文件系统上保留原始的"FileContent.txt"临时文件,则可以将内容写入StringIO
对象,这是一个类似文件的对象,不需要在文件系统上创建实际文件。
import cStringIO
tmpPckUpFile = cStringIO.StringIO()
tmpPckUpFile.write('some stuff')
tmpPckUpFile.seek(0)
upload_field = db.project_pickup_approvals.PickupContent
db(db.project_pickup_approvals.id == request.args(0)).update(
PickupContent=upload_field.store(tmpPckUpFile, filename='myfile.txt'))
tmpPckUpFile.close()
如果将前两行替换为原始tmpPckUpFile = open('FileContent.txt', 'w+')
行,则上面的代码也应该有效。