PySide6.QtCore.QTemporaryFile

class QTemporaryFile

QTemporaryFile 类是一个操作临时文件的I/O设备。更多

PySide6.QtCore.QTemporaryFile 的继承图

概要

方法

静态函数

注意

本文档可能包含从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"字符),它将被替换为自动生成的文件名部分。如果文件名不包含"XXXXXX"QTemporaryFile会将生成的部分附加到文件名中。只有第一次出现的"XXXXXX"会被考虑。

注意

在Linux上,QTemporaryFile 会尝试创建未命名的临时文件。如果成功,open() 将返回 true,但 exists() 将返回 false。如果你调用 fileName() 或任何调用它的函数,QTemporaryFile 将为文件命名,因此大多数应用程序不会看到差异。

另请参阅

tempPath() QFile

__init__()

构造一个 QTemporaryFile

默认的文件名模板由applicationName()返回的应用程序名称决定(如果应用程序名称为空,则使用"qt_temp"),后面跟着".XXXXXX"。文件存储在系统的临时目录中,该目录由tempPath()返回。

另请参阅

setFileTemplate() fileTemplate() fileName() tempPath()

__init__(parent)
Parameters:

父对象QObject

使用给定的parent构造一个QTemporaryFile

默认的文件名模板由applicationName()返回的应用程序名称决定(如果应用程序名称为空,则使用"qt_temp"),后面跟着".XXXXXX"。文件存储在系统的临时目录中,该目录由tempPath()返回。

另请参阅

setFileTemplate()

__init__(templateName)
Parameters:

templateName – str

使用templateName作为文件名模板构造一个QTemporaryFile

打开临时文件时,templateName 将用于创建唯一的文件名。

如果文件名(templateName 中最后一个目录路径分隔符之后的部分)不包含 "XXXXXX",它将自动添加。

"XXXXXX" 将被替换为文件名的动态部分,该部分被计算为唯一。

如果 templateName 是相对路径,则该路径将相对于当前工作目录。如果你想使用系统的临时目录,可以使用 tempPath() 来构造 templateName

如果调用rename()函数,指定正确的目录非常重要,因为QTemporaryFile只能在与临时文件本身创建时相同的卷/文件系统内重命名文件。

另请参阅

open() fileTemplate()

__init__(templateName, parent)
Parameters:
  • templateName – str

  • parentQObject

使用指定的parenttemplateName作为文件名模板,构造一个QTemporaryFile

打开临时文件时,templateName 将用于创建唯一的文件名。

如果文件名(templateName 中最后一个目录路径分隔符之后的部分)不包含 "XXXXXX",它将自动添加。

"XXXXXX" 将被替换为文件名的动态部分,该部分被计算为唯一的。

如果 templateName 是相对路径,则该路径将相对于当前工作目录。如果你想使用系统的临时目录,可以使用 tempPath() 来构造 templateName。如果会调用 rename() 函数,指定正确的目录非常重要,因为 QTemporaryFile 只能在与临时文件本身创建的同一卷/文件系统内重命名文件。

另请参阅

open() fileTemplate()

autoRemove()
Return type:

布尔

如果QTemporaryFile处于自动删除模式,则返回true。自动删除模式将在销毁时自动从磁盘删除文件名。这使得在堆栈上创建QTemporaryFile对象、填充数据、从中读取数据变得非常容易,最后在函数返回时它会自动清理自己。

自动移除功能默认开启。

另请参阅

setAutoRemove() remove()

static createNativeFile(file)
Parameters:

文件QFile

Return type:

QTemporaryFile

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

如果 file 还不是一个本地文件,那么会在 tempPath() 中创建一个 QTemporaryFile,将 file 的内容复制到其中,并返回指向临时文件的指针。如果 file 已经是一个本地文件,则不执行任何操作并返回 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

另请参阅

isNativePath()

static createNativeFile(fileName)
Parameters:

fileName – str

Return type:

QTemporaryFile

这是一个重载函数。

在给定的fileName上工作,而不是现有的QFile对象。

fileTemplate()
Return type:

字符串

返回文件名模板。

此方法返回的文件名模板,将是相对或绝对的,取决于用于构造此对象的文件名模板(或传递给setFileTemplate()的文件名模板)是相对或绝对的。

另请参阅

setFileTemplate() fileName() 默认 文件 名称 模板

open()
Return type:

布尔

一个 QTemporaryFile 将始终以 QIODevice::ReadWrite 模式打开,这样可以轻松访问文件中的数据。此函数在成功时将返回 true,并将 fileName() 设置为使用的唯一文件名。

另请参阅

fileName() QT_USE_NODISCARD_FILE_OPEN

setAutoRemove(b)
Parameters:

b – 布尔值

如果 btrue,则将 QTemporaryFile 设置为自动删除模式。

自动移除功能默认开启。

如果您将此属性设置为false,请确保应用程序提供了一种方式在文件不再需要时删除它,包括将责任传递给另一个进程。始终使用fileName()函数来获取文件名,永远不要尝试猜测QTemporaryFile生成的文件名。

在某些系统上,如果在关闭文件之前未调用fileName(),则无论此属性的状态如何,临时文件都可能被删除。不应依赖此行为,因此应用程序代码应调用fileName()或保持自动删除功能启用。

另请参阅

autoRemove() remove()

setFileTemplate(name)
Parameters:

name – str

将文件名模板设置为 templateName

如果文件名(templateName 中最后一个目录路径分隔符之后的部分)不包含 "XXXXXX",它将自动添加。

"XXXXXX" 将被替换为文件名的动态部分,该部分被计算为唯一的。

如果 templateName 是相对路径,则该路径将相对于当前工作目录。如果你想使用系统的临时目录,可以使用 tempPath() 来构造 templateName。如果会调用 rename() 函数,指定正确的目录非常重要,因为 QTemporaryFile 只能在与临时文件本身创建的同一卷/文件系统内重命名文件。

另请参阅

fileTemplate() fileName()