PySide6.QtCore.QTemporaryFile¶
- 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"
字符),它将被替换为自动生成的文件名部分。如果文件名不包含"XXXXXX"
,QTemporaryFile
会将生成的部分附加到文件名中。只有第一次出现的"XXXXXX"
会被考虑。注意
在Linux上,
QTemporaryFile
会尝试创建未命名的临时文件。如果成功,open()
将返回 true,但exists()
将返回 false。如果你调用fileName()
或任何调用它的函数,QTemporaryFile
将为文件命名,因此大多数应用程序不会看到差异。另请参阅
- __init__()¶
构造一个
QTemporaryFile
。默认的文件名模板由
applicationName()
返回的应用程序名称决定(如果应用程序名称为空,则使用"qt_temp"
),后面跟着".XXXXXX"
。文件存储在系统的临时目录中,该目录由tempPath()
返回。另请参阅
setFileTemplate()
fileTemplate()
fileName()
tempPath()
- __init__(parent)
- Parameters:
父对象 –
QObject
使用给定的
parent
构造一个QTemporaryFile
。默认的文件名模板由
applicationName()
返回的应用程序名称决定(如果应用程序名称为空,则使用"qt_temp"
),后面跟着".XXXXXX"
。文件存储在系统的临时目录中,该目录由tempPath()
返回。另请参阅
- __init__(templateName)
- Parameters:
templateName – str
使用
templateName
作为文件名模板构造一个QTemporaryFile
。打开临时文件时,
templateName
将用于创建唯一的文件名。如果文件名(
templateName
中最后一个目录路径分隔符之后的部分)不包含"XXXXXX"
,它将自动添加。"XXXXXX"
将被替换为文件名的动态部分,该部分被计算为唯一。如果
templateName
是相对路径,则该路径将相对于当前工作目录。如果你想使用系统的临时目录,可以使用tempPath()
来构造templateName
。如果调用
rename()
函数,指定正确的目录非常重要,因为QTemporaryFile
只能在与临时文件本身创建时相同的卷/文件系统内重命名文件。另请参阅
- __init__(templateName, parent)
- Parameters:
templateName – str
parent –
QObject
使用指定的
parent
和templateName
作为文件名模板,构造一个QTemporaryFile
。打开临时文件时,
templateName
将用于创建唯一的文件名。如果文件名(
templateName
中最后一个目录路径分隔符之后的部分)不包含"XXXXXX"
,它将自动添加。"XXXXXX"
将被替换为文件名的动态部分,该部分被计算为唯一的。如果
templateName
是相对路径,则该路径将相对于当前工作目录。如果你想使用系统的临时目录,可以使用tempPath()
来构造templateName
。如果会调用rename()
函数,指定正确的目录非常重要,因为QTemporaryFile
只能在与临时文件本身创建的同一卷/文件系统内重命名文件。另请参阅
- autoRemove()¶
- Return type:
布尔
如果
QTemporaryFile
处于自动删除模式,则返回true
。自动删除模式将在销毁时自动从磁盘删除文件名。这使得在堆栈上创建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
另请参阅
- static createNativeFile(fileName)
- Parameters:
fileName – str
- Return type:
这是一个重载函数。
在给定的
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 – 布尔值
如果
b
为true
,则将QTemporaryFile
设置为自动删除模式。自动移除功能默认开启。
如果您将此属性设置为
false
,请确保应用程序提供了一种方式在文件不再需要时删除它,包括将责任传递给另一个进程。始终使用fileName()
函数来获取文件名,永远不要尝试猜测QTemporaryFile
生成的文件名。在某些系统上,如果在关闭文件之前未调用
fileName()
,则无论此属性的状态如何,临时文件都可能被删除。不应依赖此行为,因此应用程序代码应调用fileName()
或保持自动删除功能启用。另请参阅
- setFileTemplate(name)¶
- Parameters:
name – str
将文件名模板设置为
templateName
。如果文件名(
templateName
中最后一个目录路径分隔符之后的部分)不包含"XXXXXX"
,它将自动添加。"XXXXXX"
将被替换为文件名的动态部分,该部分被计算为唯一的。如果
templateName
是相对路径,则该路径将相对于当前工作目录。如果你想使用系统的临时目录,可以使用tempPath()
来构造templateName
。如果会调用rename()
函数,指定正确的目录非常重要,因为QTemporaryFile
只能在与临时文件本身创建的同一卷/文件系统内重命名文件。另请参阅
fileTemplate()
fileName()