标签: temporary-files

如何在c#中自动删除临时文件?

如果我的应用程序关闭或崩溃,有什么方法可以确保删除临时文件?理想情况下,我想获取一个临时文件,使用它,然后忘记它.

现在我保留一个我的临时文件列表,并使用在Application.ApplicationExit上触发的事件处理程序删除它们.

有没有更好的办法?

.net c# temporary-files

55
推荐指数
5
解决办法
6万
查看次数

Python - 如何将"操作系统级别句柄转换为打开文件"转换为文件对象?

tempfile.mkstemp()返回:

一个元组,包含一个打开文件的操作系统级句柄(由os.open()返回)和该文件的绝对路径名,按顺序排列.

如何将操作系统级别的句柄转换为文件对象?

os.open()文档说明:

要将文件描述符包装在"文件对象"中,请使用fdopen().

所以我尝试过:

>>> import tempfile
>>> tup = tempfile.mkstemp()
>>> import os
>>> f = os.fdopen(tup[0])
>>> f.write('foo\n')
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
IOError: [Errno 9] Bad file descriptor
Run Code Online (Sandbox Code Playgroud)

python mkstemp fdopen temporary-files

50
推荐指数
3
解决办法
2万
查看次数

如何将PIL生成的图像发送到浏览器?

我正在使用烧瓶进行申请.我想将一个图像(由PIL动态生成)发送到客户端而不保存在磁盘上.

知道怎么做吗?

python streaming temporary-files python-imaging-library flask

48
推荐指数
5
解决办法
3万
查看次数

如何创建可由子进程读取的临时文件?

我正在编写一个Python脚本,需要将一些数据写入临时文件,然后创建一个运行C++程序的子进程,该程序将读取临时文件.我正在尝试使用NamedTemporaryFile它,但根据文档,

名称是否可以用于第二次打开文件,而命名的临时文件仍然是打开的,因此不同平台(它可以在Unix上使用;它不能在Windows NT或更高版本上使用).

事实上,在Windows上,如果我在写入后刷新临时文件,但是在我希望它消失之前不要关闭它,子进程无法打开它进行读取.

我正在通过创建文件来解决这个问题,在生成delete=False子进程之前将其关闭,然后在完成后手动删除它:

fileTemp = tempfile.NamedTemporaryFile(delete = False)
try:
    fileTemp.write(someStuff)
    fileTemp.close()
    # ...run the subprocess and wait for it to complete...
finally:
    os.remove(fileTemp.name)
Run Code Online (Sandbox Code Playgroud)

这似乎不优雅.有一个更好的方法吗?也许是一种打开临时文件权限的方法,以便子进程可以获得它?

python windows temporary-files

45
推荐指数
4
解决办法
4万
查看次数

C++:获取临时文件,跨平台

我正在寻找一种跨平台的方式来获取指定的临时文件.例如,在linux中,它将位于/tmpdir中,而在Windows中则位于一些名为Internet Explorer的临时目录中.

是否存在跨平台(Boost?)解决方案?

编辑:

我需要这个文件存在,直到程序终止.tmpfile()不能保证.引用ccpreference:

当流关闭(fclose) 或程序正常终止时,将自动删除创建的临时文件.

c++ temporary-files

41
推荐指数
3
解决办法
3万
查看次数

如何在python中使用tempfile.NamedTemporaryFile()

我想用它tempfile.NamedTemporaryFile()来写一些内容然后打开那个文件.我写了以下代码:

tf = tempfile.NamedTemporaryFile()
tfName = tf.name
tf.seek(0)
tf.write(contents)
tf.flush()
Run Code Online (Sandbox Code Playgroud)

但我无法打开此文件,并在记事本或类似的应用程序中查看其内容.有没有办法实现这个目标?为什么我不能这样做:

os.system('start notepad.exe ' + tfName)
Run Code Online (Sandbox Code Playgroud)

在末尾

python file-io temporary-files

40
推荐指数
3
解决办法
6万
查看次数

将PHP(/ PHP-FPM/Apache)的临时上载文件存储在RAM而不是文件系统中(或仅加密)?

原始问题

所以我正在研究的项目是关于文件上传的死亡偏执.
在这个问题的范围内,我没有在有效载荷方面使用该术语; 我说的是保密.

程序总是会崩溃,并使临时文件在文件系统中闲逛.这很正常.在保密偏执可以写命中临时文件夹每隔几分钟,并删除任何东西比之前的cronjob呼叫(而不是几秒钟旧的一个cronjob 一切,仅仅是因为否则可能赶上一个文件被上传过程).

......不幸的是,我们让这个偏执狂更进了一步:

理想情况下,我们希望永远不会在文件上传中看到临时文件,而是在与进程相关的RAM中.

有没有办法教PHP在内存中而不是在文件系统中查找临时文件作为blob?我们使用PHP-FPM作为CGI处理程序,使用Apache作为我们的Web服务器,以防万一.(另请注意:'Filesystem'是这里的关键字,而不是'disc',因为当然有方法将文件系统映射到RAM,但这并不能解决可访问性和自动崩溃后清理问题. )

或者,这些临时文件是否可以在写入光盘时立即加密,以便它们在没有加密的情况下永远不会保存在文件系统中?


线程概述

遗憾的是,我只能接受一个答案 - 但是对于读这篇文章的人来说,整个帖子非常有价值,并且包含了许多人的集体见解.根据希望实现的目标,接受的答案可能对您不感兴趣.如果您通过搜索引擎来到这里,请花点时间阅读整个帖子.

以下是我看到的用例的汇编,以供快速参考:

Re:PHP的临时文件

php apache security file-upload temporary-files

38
推荐指数
1
解决办法
3619
查看次数

如何在Python中创建ramdisk?

我想在Python中创建一个ramdisk.我希望能够以跨平台的方式实现这一点,因此它可以在Windows XP到7,Mac和Linux上运行.我希望能够读取/写入ramdisk,就像它是普通驱动器一样,最好带有驱动器盘符/路径.

我想要的原因是为脚本编写测试,创建具有特定结构的目录.我想在ramdisk中完全创建目录,所以我确定在测试结束后它会被完全删除.我考虑使用Python tempfile,但如果测试将在中间停止,则可能不会删除目录.我想完全确定即使有人在测试过程中拔掉计算机上的插头,它也会被删除.

python unit-testing cross-platform temporary-files ramdisk

36
推荐指数
1
解决办法
1万
查看次数

如何使用tempfile.NamedTemporaryFile()?

我正在开发一个Python脚本,需要创建大约50个不同的临时文件,这些文件在脚本过程中经常被附加并在最后合并.我确信该tempfile模块可以做我需要的,但我无法弄清楚如何阅读文档.

我想使用临时文件(而不是变量)来节省系统内存,因为这些数据块会随着脚本处理数万个其他文件而变大.

下面的代码块是我正在用于在非临时目录中创建这些文件(非暂时)的hack:

item = (string from another file)   # string must id file for future use
tmpfile = 'tmpfiles/' + item
if item not in totalitems:
   totalitems.add(item)
   with open(tmpfile, 'w') as itemfile:
      output = some stuff
      tmpfile.write(output)
else:
   with open(tmpfile, 'a') as itemfile:
      output = different stuff
      tmpfile.write(output)
Run Code Online (Sandbox Code Playgroud)

我想我需要的是tempfile.NamedTemporaryFile().根据文件:

可以从文件对象的名称成员中检索该名称.

不幸的是,我不明白这意味着什么.当我在我正在处理的文件中再次运行其相应的"项目"时,我只需要能够稍后再次调用每个文件.我认为这是相当直接的,我只是在密集.如果它很重要,我有Python 2.7.1和3.2.3的这个脚本的版本.我真的只需要一个人或另一个人去工作; 我创造了两个作为学习练习.

python temporary-files

36
推荐指数
2
解决办法
6万
查看次数

如何在java中创建临时文件而不在文件名后附加随机数?

我需要创建一个临时文件,所以我尝试了这个:

String[] TempFiles = {"c1234c10","c1234c11","c1234c12","c1234c13"};
for (int i = 0; i <= 3; i++) {
    try {
        String tempFile = TempFiles[i]; 
        File temp = File.createTempFile(tempFile, ".xls"); 
        System.out.println("Temp file : " + temp.getAbsolutePath());
    } catch (IOException e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是这样的:

 Temp file : C:\Users\MD1000\AppData\Local\Temp\c1234c108415816200650069233.xls
 Temp file : C:\Users\MD1000\AppData\Local\Temp\c1234c113748833645638701089.xls
 Temp file : C:\Users\MD1000\AppData\Local\Temp\c1234c126104766829220422260.xls
 Temp file : C:\Users\MD1000\AppData\Local\Temp\c1234c137493179265536640669.xls
Run Code Online (Sandbox Code Playgroud)

现在,我不希望将额外的数字(long int)添加到文件名中.我怎样才能做到这一点?谢谢

java temporary-files

33
推荐指数
4
解决办法
6万
查看次数