- class QTemporaryFile#
QTemporaryFile类是在临时文件上运行的 I/O 设备。 更多…摘要#
方法#
def
__init__()def
autoRemove()def
fileTemplate()def
open()def
setAutoRemove()
静态函数#
注意
本文档可能包含从C++自动翻译到Python的片段。我们始终欢迎对片段翻译的贡献。如果您看到翻译中存在问题,您也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建一个工单来告诉我们。
详细描述#
警告
本节包含从C++自动翻译到Python的片段,可能包含错误。
QTemporaryFile用于安全地创建唯一的临时文件。文件本身是通过调用open()来创建的。临时文件的名字确保是唯一的(即,您可以保证不会覆盖现有的文件),并且在QTemporaryFile对象销毁后将随后被删除。这是一项重要的技术,可以避免临时文件中存储数据的程序数据损坏。文件名是自动生成的,或者基于传递给QTemporaryFile构造函数的模板来创建的。示例
# Within a function/method... file = QTemporaryFile() if file.open(): # file.fileName() returns the unique file name # The QTemporaryFile destructor removes the temporary file # as it goes out of scope.
在调用
close()之后重新打开QTemporaryFile是安全的。只要QTemporaryFile对象本身没有被销毁,唯一的临时文件将存在,并由QTemporaryFile内部保持打开状态。可以通过调用
fileName()找到临时文件的名字。请注意,这仅在文件首次打开后定义;在此时之前,函数返回一个空字符串。临时文件的名字将包含一些静态的部分和一些计算为唯一的部分。默认文件名将从
applicationName()获取(否则为qt_temp),并将其放置在由tempPath()返回的临时路径中。如果您指定了自己的文件名,则默认情况下不会将相对文件路径放置在临时目录中,而是相对于当前工作目录。如果将调用rename()函数,指定正确的目录是很重要的,因为QTemporaryFile只能将其创建在同一卷/文件系统内的文件重命名。指定的文件名可以包含以下模板
XXXXXX(六个大写字母“X”字符),它将被自动生成的文件名部分替换。请注意,模板区分大小写。如果模板在文件名中不存在,QTemporaryFile将将生成的部分追加到给定的文件名中。注意
在Linux上,
QTemporaryFile将尝试创建无名的临时文件。如果成功,open()将返回true,但exists()将为false。如果您调用fileName()或任何调用它的函数,QTemporaryFile将给文件一个名称,因此大多数应用程序将不会看到任何区别。有关信息
- __init__()#
使用由
applicationName()返回的应用程序名称(否则为qt_temp)后跟“.XXXXXX”作为文件模板,构造一个QTemporaryFile。该文件存储在系统的临时目录tempPath()中。- __init__(parent)
- 参数:
parent –
QObject
使用由
applicationName()返回的应用程序名称(否则为qt_temp)后跟“.XXXXXX”作为文件模板,并带有给定parent的QTemporaryFile构造一个。该文件存储在系统的临时目录tempPath()中。有关信息
- __init__(templateName)
- 参数:
templateName – 字符串
使用模板文件名
templateName创建一个QTemporaryFile对象。当打开临时文件时,将使用该文件名来创建一个唯一的文件名。如果
templateName不包含 XXXXXX,它将自动附加并用作文件名的动态部分。如果
templateName是相对路径,该路径相对于当前工作目录。如果您想使用系统临时目录来构造templateName,可以使用tempPath()。如果将调用rename()函数,则非常重要地指定正确的目录,因为QTemporaryFile只能在与它自己创建的相同卷/文件系统中重命名文件。有关信息
- __init__(templateName, parent)
- 参数:
templateName – 字符串
parent –
QObject
使用模板文件名
templateName和指定的parent创建一个QTemporaryFile对象。打开临时文件时,将使用该文件名来创建一个唯一的文件名。如果
templateName不包含 XXXXXX,它将自动附加并用作文件名的动态部分。如果
templateName是相对路径,该路径相对于当前工作目录。如果您想使用系统临时目录来构造templateName,可以使用tempPath()。如果将调用rename()函数,则非常重要地指定正确的目录,因为QTemporaryFile只能在与它自己创建的相同卷/文件系统中重命名文件。有关信息
- autoRemove()#
- 返回类型::
bool
如果
QTemporaryFile在自动删除模式下,则返回true。自动删除模式会在销毁时自动将从磁盘删除文件名。这使得在堆栈上创建您的QTemporaryFile对象变得非常容易,填充数据,从中读取,最终在函数返回时自动清理。默认开启自动删除。
有关信息
警告
本节包含从C++自动翻译到Python的片段,可能包含错误。
如果
文件不是一个本地的文件,那么在tempPath()中创建一个QTemporaryFile,将文件的内容复制进去,并返回临时文件的一个指针。如果文件已经是本地文件,则不执行任何操作并返回0。例如
f = QFile(":/resources/file.txt") QTemporaryFile.createNativeFile(f) # Returns a pointer to a temporary file f = QFile("/users/qt/file.txt") QTemporaryFile.createNativeFile(f) # Returns 0
有关信息
- 静态createNativeFile(fileName)
- 参数:
fileName – 字符串
- 返回类型::
这是一个重载函数。
在工作于给定的
fileName上,而不是现有的QFile对象。- fileTemplate()#
- 返回类型::
字符串
返回设定的文件模板。默认文件模板将是 qcoreappname.XXXXXX 并放置在
tempPath()中。有关信息
- open()#
- 返回类型::
bool
QTemporaryFile总是以QIODevice::ReadWrite模式打开,这允许轻松访问文件中的数据。此函数在成功时返回true,并将fileName()设置为使用的唯一文件名。有关信息
fileName()- setAutoRemove(b)#
- 参数:
– 布尔值
如果b为
true,则将QTemporaryFile设置为自动删除模式。默认开启自动删除。
如果您将此属性设置为
false,请确保应用程序提供一种方法在不再需要文件时将其删除,包括将责任转交给另一个程序。始终使用fileName()函数来获取名称,切勿尝试猜测QTemporaryFile生成的名称。在某些系统中,如果在关闭文件之前没有调用
fileName(),则无论此属性的状态如何,临时文件可能会被删除。不应依赖于这种行为,因此应用程序代码应该调用fileName()或启用自动删除功能。有关信息
- setFileTemplate(name)#
- 参数:
name – str
将文件名的静态部分设置为
name。如果文件模板包含 XXXXXX,则将自动替换为文件名的唯一部分,否则将根据指定的静态部分自动确定文件名。如果
name包含相对文件路径,则路径相对于当前工作目录。如果您想使用系统的临时目录,可以使用tempPath()来构造name。如果将调用rename()函数,则非常重要指定正确的目录,因为QTemporaryFile只能重命名与临时文件本身创建在相同卷/文件系统中的文件。有关信息