第八篇:Files

File类型是python内置类型。使用内置函数open可以得到一个file object.

 

1.常用的file操作清单:

 

2.open files

打开文件:

打开文件,需要制定操作模式。默认模式是只读的。

模式'r', 表示打开文件并读里面内容

模式‘w',表示创建或打开文件,向文件里面写内容。(注意会覆盖原有内容)

模式’a',表示'a'打开并在文件末尾附加内容。

符号’b',加一个b,表示允许二进制数据

符号‘+’,加一个‘+’号,表示既可以读也可以写。

 

读写内容:

所有往python中写的内容都必须是string类型。

在使用读写操作时,使用整行读写将比一般读写要快很多。建议使用。

所有读到的数据都是string类型。所以即使存储的时int类型,读出来也是string类型了。如果要使用int类型。则需强制转换。

 

关闭文件:

使用close()函数关闭文件,但是这不是必须的。当file object没有被引用时,系统进行清理时会自动关闭它。当然使用close()是一个好的习惯。

 

3.文件操作举例

读操作:

>>> myfile = open('F:/Project/python/testfile.txt', 'r')
>>> myfile.readline()
'Hello, My name is testfile.\n'
>>> myfile.readline()
'Happy to see you!'
>>> myfile.readline()
''
>>> myfile.read()
''
>>> myfile.seek(0)
>>> myfile.read()
'Hello, My name is testfile.\nHappy to see you!'
>>> myfile.c
>>> myfile.close()

 

写操作:

>>> myfile = open('F:/Project/python/testfile.txt', 'w')
>>> myfile.writelines('hello')
>>> myfile.writelines('testfile')
>>> myfile.read()
>>> myfile.close()
>>> myfile = open('F:/Project/python/testfile.txt', 'r')
>>> myfile.read()
'hellotestfile'
>>> myfile.close()

 

4.保存object---pickle函数

之前讲过eval。但是这个函数太强大,给它足够的权限,甚至可以删除你系统里所有的文件。所以对于不确定是否安全的文件,想把它记录的东西加载进来,可以使用pickle函数。

比如,下面是保存字典的例子:

>>> D = {'a':1, 'b':2}
>>> myfile = open('F:/Project/python/testfile.txt', 'wb')
>>> import pickle
>>> pickle.dump(D, myfile)
>>> myfile.close()

从文件中将object读到内存里:

>>> myfile = open('F:/Project/python/testfile.txt', 'rb')
>>> E = pickle.load(myfile)
>>> E
{'a': 1, 'b': 2}

 

可以在文件中存储多个object,然后通过pickle一一读出。

>>> pickle.load(myfile)
[1, 2, 3]
>>> pickle.load(myfile)
{'a': 1, 'b': 2}
>>> pickle.load(myfile)
{'a': 1, 'b': 2}
>>> pickle.load(myfile)

Traceback (most recent call last):
  File "<pyshell#87>", line 1, in <module>
    pickle.load(myfile)
  File "C:\Python27\lib\pickle.py", line 1378, in load
    return Unpickler(file).load()
  File "C:\Python27\lib\pickle.py", line 858, in load
    dispatch[key](self)
  File "C:\Python27\lib\pickle.py", line 880, in load_eof
    raise EOFError
EOFError
>>> 


与pickle相关的还有shelve函数。有兴趣可以去了解。这边不再介绍。

5.打包二进制数据

用‘wb'模式打开数据后,可以使用pack函数打包变量。

下面代码里的'>i4sh'告诉pack函数,pack的是4字节的整数,4个字符和2字节的整数。

>>> myfile = open('F:/Project/python/testfile.txt', 'wb')
>>> import struct
>>> data = struct.pack('>i4sh', 7, 'spam', 8)
>>> data
'\x00\x00\x00\x07spam\x00\x08'
>>> myfile.write(data)
>>> myfile.close()
>>> 
>>> myfile = open('F:/Project/python/testfile.txt', 'rb')
>>> data = myfile.read()
>>> values = struct.unpack('>i4sh', data)
>>> values
(7, 'spam', 8)

由于打包二进制操作偏向底层,这里也不展开讲,有兴趣可以查阅官方文档。

 

6.文件上下文管理

这方面涉及很多没有讲过的知识,以后章节会讲解到。

 

end.

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值