非常教程

Python参考手册

文件和目录访问 | File & Directory Access

tempfile

源代码: Lib / tempfile.py

该模块生成临时文件和目录。它适用于所有支持的平台。

在Python 2.3版本中,为了增强安全性,对该模块进行了大修。现在提供三种新的功能,NamedTemporaryFile()mkstemp(),和mkdtemp(),这应消除所有剩余需要使用不安全的mktemp()功能。由该模块创建的临时文件名不再包含进程ID; 而是使用六个随机字符的字符串。

此外,所有用户可调用的函数现在都有额外的参数,可以直接控制临时文件的位置和名称。不再需要使用全局tempdir模板变量。为了保持向后兼容性,论证顺序有点奇怪; 为了清楚起见,建议使用关键字参数。

该模块定义了以下用户可调用函数:

tempfile.TemporaryFile([mode='w+b'[, bufsize=-1[, suffix=''[, prefix='tmp'[, dir=None]]]]])

返回可用作临时存储区域的文件类对象。该文件是使用创建的mkstemp()。一旦它关闭,它就会被销毁(包括当对象被垃圾收集时隐式关闭)。在Unix下,该文件的目录条目在文件创建后立即被删除。其他平台不支持这个; 您的代码不应该依赖使用此函数创建的临时文件,而该文件在文件系统中具有或不具有可见名称。

所述模式参数默认为'w+b'使得所创建的文件可以被读取并且没有被关闭写入。使用二进制模式,以便在所有平台上保持一致,而不考虑存储的数据。bufsize默认为-1,这意味着使用操作系统默认值。

目录前缀后缀的参数传递给mkstemp()

返回的对象是POSIX平台上的真实文件对象。在其他平台上,它是一个文件类对象,其file属性是底层的真实文件对象。这个类文件对象可以在一个with语句中使用,就像普通文件一样。

tempfile.NamedTemporaryFile([mode='w+b'[, bufsize=-1[, suffix=''[, prefix='tmp'[, dir=None[, delete=True]]]]]])

这个函数的运行方式与此相同TemporaryFile(),除了该文件保证在文件系统中具有可见名称(在Unix上,目录项不是未链接的)。该名称可以从name返回的类文件对象的属性中检索。当命名的临时文件仍处于打开状态时,名称是否可用于第二次打开该文件,这在不同平台上有所不同(它可以在Unix上使用,不能在Windows NT或更高版本上使用)。如果删除为真(默认),则该文件在关闭后立即删除。

返回的对象始终是一个类文件对象,其file属性是底层的真实文件对象。这个类文件对象可以在一个with语句中使用,就像普通文件一样。

2.3版本的新功能。

2.6版新增功能:删除参数。

tempfile.SpooledTemporaryFile([max_size=0[, mode='w+b'[, bufsize=-1[, suffix=''[, prefix='tmp'[, dir=None]]]]]])

TemporaryFile()除了数据在内存中被缓存直到文件大小超过max_sizefileno()调用文件的方法之前,此功能的运行方式与此相同,此时内容将写入磁盘并且操作将继续进行TemporaryFile()。此外,它的truncate方法不接受一个size参数。

生成的文件有一个额外的方法,rollover()它会导致文件无论大小如何都会转到磁盘上的文件。

返回的对象是一个类文件对象,其_file属性可以是StringIO对象也可以是真实文件对象,具体取决于是否rollover()已被调用。这个类文件对象可以在一个with语句中使用,就像普通文件一样。

2.6版本中的新功能。

tempfile.mkstemp([suffix=''[, prefix='tmp'[, dir=None[, text=False]]]])

尽可能以最安全的方式创建一个临时文件。假设平台正确实现了该os.O_EXCL标志,文件创建时就没有竞争条件os.open()。该文件只能通过创建用户标识来读写。如果平台使用权限位来指示文件是否可执行,则该文件可由任何人执行。文件描述符不被子进程继承。

与此不同的是TemporaryFile(),用户mkstemp()负责在完成临时文件时删除临时文件。

如果指定了后缀,文件名将以该后缀结尾,否则不会有后缀。mkstemp()不在文件名和后缀之间加点; 如果你需要,把它放在后缀的开头。

如果指定了前缀,则文件名将以该前缀开头; 否则,使用默认的前缀。

如果指定了dir,则该文件将在该目录中创建; 否则,使用默认目录。默认目录是从依赖于平台的列表中选择的,但应用程序的用户可以通过设置TMPDIRTEMPTMP环境变量来控制目录位置。因此不能保证生成的文件名将具有任何好的属性,例如当通过外部命令传递时不需要引用os.popen()

如果指定了文本,则表示是否以二进制模式(默认)或文本模式打开文件。在某些平台上,这没有什么区别。

mkstemp()os.open()以该顺序返回一个包含操作系统级句柄的元组到一个打开的文件(将返回)以及该文件的绝对路径名。

2.3版本的新功能。

tempfile.mkdtemp([suffix=''[, prefix='tmp'[, dir=None]]])

尽可能以最安全的方式创建临时目录。目录创建时没有竞争条件。该目录只能通过创建用户标识才可读,可写和可搜索。

完成后,用户mkdtemp()负责删除临时目录及其内容。

前缀后缀DIR参数是一样的mkstemp()

mkdtemp() 返回新目录的绝对路径名。

2.3版本的新功能。

tempfile.mktemp([suffix=''[, prefix='tmp'[, dir=None]]])

自2.3版弃用:mkstemp()改为使用。

返回进行调用时不存在的文件的绝对路径名。该前缀后缀DIR参数是一样的mkstemp()

警告

使用此功能可能会在程序中引入安全漏洞。当你回过头来对文件名做任何事情时,其他人可能会殴打你。mktemp()用法可以轻松替换NamedTemporaryFile(),并传递delete=False参数:

>>> f = NamedTemporaryFile(delete=False)
>>> f
<open file '<fdopen>', mode 'w+b' at 0x384698>
>>> f.name
'/var/folders/5q/5qTPn6xq2RaWqk+1Ytw3-U+++TI/-Tmp-/tmpG7V1Y0'
>>> f.write("Hello World!\n")
>>> f.close()
>>> os.unlink(f.name)
>>> os.path.exists(f.name)
False

该模块使用一个全局变量来告诉它如何构建一个临时名称。它们在首次调用上述任何函数时初始化。来电者可能会改变他们,但这是不鼓励的; 改为使用适当的函数参数。

tempfile.tempdir

当设置为除此之外的值时None,此变量为本模块中定义的所有函数定义dir参数的默认值。

如果tempdir未设置或None在任何上述函数调用时,Python搜索标准目录列表并将tempdir设置为主叫用户可以创建文件的第一个目录。列表为:

  1. TMPDIR环境变量命名的目录。
  2. TEMP环境变量命名的目录。
  3. TMP环境变量命名的目录。
  4. 平台特定的位置:
    • 在RiscOS上,由Wimp$ScrapDir环境变量命名的目录。
    • 在Windows中,目录C:\TEMPC:\TMP\TEMP,并\TMP按此顺序。
    • 在所有其他平台,目录/tmp/var/tmp以及/usr/tmp在这个顺序。
  5. 作为最后的手段,当前的工作目录。

tempfile.gettempdir()

返回当前选中的目录以创建临时文件。如果tempdir不是None,则返回其内容; 否则,执行上述搜索,并返回结果。

2.3版本的新功能。

tempfile.template

自2.0版弃用:gettempprefix()改为使用。

当设置为除此以外的值时None,此变量定义由返回的文件名的最后一个组件的前缀mktemp()。一个由六个随机字母和数字组成的字符串被附加到前缀以使文件名唯一。默认的前缀是tmp

此模块的旧版本用于在呼叫之后要求template设置Noneos.fork(); 从版本1.5.2开始这不是必需的。

tempfile.gettempprefix()

返回用于创建临时文件的文件名前缀。这不包含目录组件。使用此函数优于直接读取模板变量。

1.5.2版本的新功能。

Python

Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于1989年发明,第一个公开发行版发行于1991年。 Python 是纯粹的自由软件, 源代码和解释器 CPython 遵循 GPL 协议。Python 语法简洁清晰,特色之一是强制用空白符( white space )作为语句缩进。

主页 https://www.python.org/
源码 https://github.com/python/cpython
版本 2.7
发布版本 2.7.13

Python目录

1.内置常量 | Built-in Constants
2.内置例外 | Built-in Exceptions
3.内置函数 | Built-in Functions
4.内置类型 | Built-in Types
5.编译器 | Compiler
6.加密 | Cryptography
7.数据压缩 | Data Compression
8.数据持久性 | Data Persistence
9.数据类型 | Data Types
10.调试和分析 | Debugging & Profiling
11.开发工具 | Development Tools
12.文件和目录访问 | File & Directory Access
13.文件格式 | File Formats
14.构架 | Frameworks
15.输入 | Importing
16.输入/输出 | Input/ouput
17.国际化 | Internationalization
18.网络 | Internet
19.网络数据 | Internet Data
20.翻译 | Interpreters
21.语言 | Language
22.记录 | Logging
23.Mac OS
24.MS Windows
25.多媒体 | Multimedia
26.联网 | Networking
27.数字与数学 | Numeric & Mathematical
28.操作系统 | Operating System
29.可选操作系统 | Optional Operating System
30.限制执行 | Restricted Execution
31.运行 | Runtime
32.SGI IRIX
33.软件包装与分销 | Software Packaging & Distribution
34.字符串 | String
35.结构化标记 | Structured Markup
36.Tk
37.Unix
38.Python 简介
39.Python pass 语句
40.Python 循环嵌套
41.Python 运算符
42.Python log10() 函数
43.Python log() 函数
44.Python floor() 函数
45.Python fabs() 函数
46.Python exp() 函数
47.Python cmp() 函数
48.Python ceil() 函数
49.Python abs() 函数
50.Python Number(数字)
51.Python pow() 函数
52.Python modf() 函数
53.Python min() 函数
54.Python max() 函数
55.Python asin() 函数
56.Python acos() 函数
57.Python uniform() 函数
58.Python shuffle() 函数
59.Python seed() 函数
60.Python random() 函数
61.Python randrange() 函数
62.Python choice() 函数
63.Python sqrt() 函数
64.Python round() 函数
65.Python radians() 函数
66.Python degrees() 函数
67.Python tan() 函数
68.Python sin() 函数
69.Python hypot() 函数
70.Python cos() 函数
71.Python atan2() 函数
72.Python atan() 函数
73.Python 元组
74.Python 列表(List)
75.Python 字符串
76.Python 字典(Dictionary)
77.Python 日期和时间
78.Python 函数
79.Python 模块
80.Python capitalize()方法
81.Python center()方法
82.Python count() 方法
83.Python expandtabs()方法
84.Python endswith()方法
85.Python encode()方法
86.Python decode()方法
87.Python find()方法
88.Python index()方法
89.Python 异常处理
90.Python isspace()方法
91.Python isnumeric()方法
92.Python islower()方法
93.Python isdigit()方法
94.Python isalpha()方法
95.Python isalnum()方法
96.Python isupper()方法
97.Python istitle()方法
98.Python min()方法
99.Python max()方法
100.Python maketrans()方法