大佬教程收集整理的这篇文章主要介绍了无法使用 Python 在临时文件中写入内容,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想创建一个临时文件,在其中发布一些内容,上传它,然后希望它被自动删除。
在检查该方法是否有效后,我发现该文件为空:其中没有任何内容。
>>> with tempfile.namedTemporaryfile(suffix='.csv') as temp_certificate_file:
... temp_certificate_file.write(bytes( "managed-graphdb,managed-graphdb-admins,{},compute-qus1,kubernetes:config:compute-qus1".format('aviral-june30-3','devel'),enCoding='utf-8'))
... print(temp_certificate_file.Name)
... import os
... from shutil import copyfile
... copyfile(temp_certificate_file.name,'aviral_tesTing.csv')
...
104
/var/folders/wp/w5ztm8tj0mq99fprhvys5f540000gr/T/tmpl0odthfz.csv
'aviral_tesTing.csv'
>>> ^D
(venv) ➜ neo4j git:(graph-storage/GRAPH-14982-setup-absorber-for-neo4j) cat aviral_tesTing.csv
(venv) ➜ neo4j git:(graph-storage/GRAPH-14982-setup-absorber-for-neo4j)
我的代码打开一个文件指针,在其中写入一些字节,然后复制该临时文件的文件,当 with
的范围结束时,该临时文件将被删除。在 sHell 中运行脚本后,我尝试 cat
复制的文件,但它为空。
只要文件处于活动状态,是否没有写入任何内容或复制命令失败? 如果这是真的,复制命令复制空文件因为写指针处于活动状态,那么上传命令也会因为同样的原因而失败?那么如何上传临时文件?
在其他任何尝试通过不同的句柄(例如通过接收名称并打开它)使用它之前,您需要明确 flush
NamedTemporaryFile
。添加:
temp_certificate_file.flush()
在调用 copyfile
之前,因此用户模式缓冲区被刷新到操作系统,使新数据在文件独立打开时可见。
或者,对于这种特定情况,您自己打开另一个文件,返回到 NamedTemporaryFile
的开头,然后使用 copyfiLeobj
从您写入的同一个文件句柄执行复制( seek
可能会刷新文件,但即使没有刷新,也会使用您编写的相同句柄来确保您编写的缓冲数据可见):
>>> with tempfile.NamedTemporaryFile(suffix='.csv') as temp_certificate_file:
... temp_certificate_file.write(bytes( "managed-graphdb,managed-graphdb-admins,{},compute-qus1,kubernetes:config:compute-qus1".format('aviral-june30-3','devel'),encoding='utf-8'))
... print(temp_certificate_file.Name)
... import os
... from shutil import copyfiLeobj
... temp_certificate_file.seek(0) # Seek BACk to beginning
... with open('aviral_tesTing.csv',"wb") as outfile:
... copyfiLeobj(temp_certificate_file,outfilE)
以上是大佬教程为你收集整理的无法使用 Python 在临时文件中写入内容全部内容,希望文章能够帮你解决无法使用 Python 在临时文件中写入内容所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。