我从Django网站的表单上传了几个.xlsx文件。由于不值得解释的原因,我需要获取这些文件对象的文件路径,而不是直接对它们执行操作。 Tl;博士:我不得不花几天时间重写其他人的代码。
以下是执行此操作的最佳方式:
感谢。
答案 0 :(得分:2)
NamedTemporaryFile。 with块为你做了所有的清理工作,这个命名版本意味着如果你必须走得那么远,可以通过文件名将临时文件传递给其他进程。 Sorta示例(请注意,这主要是动态编码,所以这里没有工作代码的承诺)
import tempfile
def handler(inmemory_fh):
with tempfile.NamedTemporaryFile() as f_out:
f_out.write(inmemory_fh.read()) # or something
subprocess.call(['/usr/bin/dosomething', f_out.name])
当withblock退出时,文件将被删除。
至于那是最好的方法吗?恩,您可以访问他们的上传代码并告诉django将其写入文件,或者您可以为它设置django设置({{3}})并查看django是否会为您执行此操作。取决于您对该文件的确切需要。