- 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
只能重命名与临时文件本身创建在相同卷/文件系统中的文件。有关信息