python中os模块读写文件_Python教程:读写文件

该篇博客介绍了Python中如何进行文件的读写操作,包括读取数据.dat文件,计算萼片与花瓣的长宽比,并将结果写入新的.result.dat文件。此外,还提到了Python的pickle模块,用于对象的持久化存储,展示了如何存储和恢复列表数据到文件中。
摘要由CSDN通过智能技术生成

创建、读和写文件的能力是许多程序所必需的。读取一个文件,对其中的内容进行一些处理,然后把结果写入到另外一个文件,应该是非常常用的一种处理模式。

读取文件

下面是一个简单的例子。数据是R自带的数据,进行了简化。数据如下:id Sepal.Length Sepal.Width Petal.Length Petal.Width

1 5.1 3.5 1.4 0.2

2 4.9 3.0 1.4 0.2

3 4.7 3.2 1.3 0.2

4 4.6 3.1 1.5 0.2

5 5.0 3.6 1.4 0.2

6 5.4 3.9 1.7 0.4

7 4.6 3.4 1.4 0.3

8 5.0 3.4 1.5 0.2

9 4.4 2.9 1.4 0.2

10 4.9 3.1 1.5 0.1

11 5.4 3.7 1.5 0.2

12 4.8 3.4 1.6 0.2

13 4.8 3.0 1.4 0.1

14 4.3 3.0 1.1 0.1

15 5.8 4.0 1.2 0.2

16 5.7 4.4 1.5 0.4

第一列为序号,后面是测量的数据。分别是萼片的长、宽,花瓣的长、宽。 把上面数据存储为data.dat,放到程序的同一目录下。程序的目的是计算萼片与花瓣的长宽比。注意读写文件的用法。# -- coding:utf-8 --

import os

import sys

fi = open('data.dat') # 打开文件

cnts = fi.readlines() # 将所有数据读入

fo = open('result.dat', 'w') # 打开文件准备写入,注意'w'

for cnt in cnts:

cnt = cnt.strip() # 去掉每一条记录的换行与回车

# 对是否空行进行判断

if len(cnt) > 0:

recs = cnt.split() # 对记录进行切分

# 第一行单独处理

if recs[0] == 'id':

fo.write('id Sepal Petaln')

else:

# 只提取后四列数值项

vals = [float(x) for x in recs[1:] ]

# 对数据进行一些计算

v1 = vals[0] / vals[1]

v2 = vals[2] / vals[3]

# 格式化结果,并写入到文件

fo.write('%s %10.2f %10.2fn' % (recs[0], v1, v2))

fo.close()

fi.close()

通过指明我们希望打开的文件和模式来创建一个file类的实例。模式可以为读模式('r')、写模式('w')或追加模式('a')。事实上还有多得多的模式可以使用

。如果我们没有指定模式,读模式会作为默认的模式。

存储器

Python提供一个标准的模块,称为pickle。使用它你可以在一个文件中储存任何Python对象,之后你又可以把它完整无缺地取出来。这被称为 持久地

储存对象。 还有另一个模块称为cPickle,它的功能和pickle模块完全相同,只不过它是用C语言编写的,因此要快得多(比pickle快1000倍)。你可

以使用它们中的任一个,而我们在这里将使用cPickle模块。记住,我们把这两个模块都简称为pickle模块。import cPickle as p

shoplistfile = 'shoplist.data'

shoplist = ['apple', 'mango', 'carrot', 10, 22, 35]

# Write to the file

f = file(shoplistfile, 'w')

p.dump(shoplist, f) # dump the object to a file

f.close()

del shoplist # remove the shoplist

# Read back from the storage

f = file(shoplistfile)

storedlist = p.load(f)

print storedlist

为了在文件里储存一个对象,首先以写模式打开一个file对象,然后调用储存器模块的dump函数,把对象储存到打开的文件中。这个过程称为 储存 。接下来,我们使用pickle模块的load函数的返回来取回对象。这个过程称为 取储存 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值