什么样运用有的时候文件,Python模块学习

实际案例

某项目中,我们从传感器搜集数据,每收罗到1G数据后,做多少分析,最后只保留剖判结果。那样非常的大的一时数据假设常驻内部存款和储蓄器,将消耗多量内部存款和储蓄器财富,大家能够使用有的时候文件存款和储蓄这一个权且数据。

偶尔文件不用命名,且关闭后会自动删除。

不留余地方案:使用标准库中tempfile下的TemporaryFile,NamedTemporaryFile。

代码如下:

# -*- coding: utf-8 -*-from tempfile import TemporaryFile, NamedTemporaryFile# TemporaryFile创建的临时文件,只能由f访问f = TemporaryFile()f.write('abcdef' * 100000)f.seek# 每次读取一部分,否则内存消耗过大print f.read# NamedTemporaryFile创建的临时文件可在文件系统中找到ntf = NamedTemporaryFile()# 临时文件所在文件路径print ntf.name

运维结果为:

abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdc:usersadminappdatalocaltemptmpcnn26b

在NamedTemporaryFile中,大家能够安装参数delete=False关闭自动删除机制,那样大家在创立三个新的有时文件时,原本的有的时候文件如故存在。

着重有以下多少个函数:

tempfile.TemporaryFile

如何你的应用程序供给三个临时文件来存储数据,但无需同别的程序分享,那么用TemporaryFile函数创立偶尔文件是最棒的选料。其余的应用程序是敬敏不谢找到或张开那些文件的,因为它并不曾引用文件系统表。用那一个函数创造的不经常文件,关闭后会自动删除。

 

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import os
import tempfile
 
print 'Building a file name yourself:'
filename = '/tmp/guess_my_name.%s.txt' % os.getpid()
temp = open(filename, 'w+b')
try:
    print 'temp:', temp
    print 'temp.name:', temp.name
finally:
    temp.close()
    os.remove(filename)     # Clean up the temporary file yourself
 
print
print 'TemporaryFile:'
temp = tempfile.TemporaryFile()
try:
    print 'temp:', temp
    print 'temp.name:', temp.name
finally:
    temp.close()  # Automatically cleans up the file

以那件事例表达了平时成立文件的章程与TemporaryFile()的分歧之处,注意:用TemporaryFile()成立的文书并未公文名

 

$ python tempfile_TemporaryFile.py

 

Building a file name yourself:

temp: <open file
‘/tmp/guess_my_name.14932.txt’, mode ‘w+b’ at 0x1004481e0>

temp.name:
/tmp/guess_my_name.14932.txt

 

TemporaryFile:

temp: <open file ‘<fdopen>’, mode
‘w+b’ at 0x1004486f0>

temp.name: <fdopen>

 

私下认可情况下接纳w+b权限创建文件,在其他平新北都以这么,并且程序可以对它进行读写。

 

?

1
2
3
4
5
6
7
8
9
10
11
import os
import tempfile
 
temp = tempfile.TemporaryFile()
try:
    temp.write('Some data')
    temp.seek(0)
     
    print temp.read()
finally:
    temp.close()

写入侯,要求利用seek(),为了以往读取数据。

 

 

$ python tempfile_TemporaryFile_binary.py

 

Some data

假如您想让文件以text情势运维,那么在开创的时候要修改mode为’w+t’

 

?

1
2
3
4
5
6
7
8
9
10
11
import tempfile
 
f = tempfile.TemporaryFile(mode='w+t')
try:
    f.writelines(['firstn', 'secondn'])
    f.seek(0)
 
    for line in f:
        print line.rstrip()
finally:
    f.close()

$ python tempfile_TemporaryFile_text.py

 

first

second

tempfile.NamedTemporaryFile

发表评论

电子邮件地址不会被公开。 必填项已用*标注