Python的文件读写有点类似php的文件读写。php的文件读写已经在《【php】让记事本成为你调控变量的控制台》(点击打开链接)说过了,下面用一个小例子说明Python的文件读写。
在F盘原本是没有f:\你好.txt这个文件的,我们要把用户在Python控制台输入的内容,搞到这个文件上去。本程序在Eclipse下的Pydev编译通过没有乱码,Windows控制台cmd的乱码问题请参考《【Python】遍历某目录下的所有文件夹与文件的路径、输出中文乱码问题》(点击打开链接)。程序代码如下:
#-*-coding:utf-8-*- import os; #写操作 fileName="f:\你好.txt" fileContent=raw_input("你输入的内容将会追加到"+fileName); fp=open(fileName.decode('utf-8').encode('gbk'),"a+"); fp.write(fileContent); print "你输入的内容:"+fileContent; print "已追加写入至:"+fileName; fp.close(); print ; #读操作 fileSize=os.path.getsize(fileName.decode('utf-8').encode('gbk')); fp=open(fileName.decode('utf-8').encode('gbk'),"a+"); print "fileName现在的文件大小为:"+str(fileSize)+"b"; print "现在"+fileName+"的内容为:" print fp.read(fileSize).decode('utf-8'); fp.close();
这里,主要说明几个文件操作的方法:
1、系统的固有类OS可以获取文件大小:os.path.getsize(filename),其中filename是路径。
可以看到上面的路径被我通过.decode(‘utf-8‘).encode(‘gbk‘)先编码为utf-8,再解码为gbk,用来适应系统的编码方式,否则会出现乱码。
主要是系统对于文件名的处理与Python对于文件名的处理的编码不一致。即使你在开头放了#-*-coding:utf-8-*-
然而,对于文件内容的处理却不用如此。Python的编码就是奇奇怪怪的
2、open方法第二个参数代码文件的读取的方式。虽然Python与C语言一样,提供的读取方法同样有a+,w+,r+三大类。
w,以写方式打开,
a,以追加模式打开(从EOF开始,必要时创建新文件)
r+,以读写模式打开
w+,以读写模式打开(参见w)
a+,以读写模式打开(参见a)
rb,以二进制读模式打开
wb,以二进制写模式打开(参见w)
ab,以二进制追加模式打开(参见a)
rb+,以二进制读写模式打开(参见r+)
wb+,以二进制读写模式打开(参见w+)
ab+,以二进制读写模式打开(参见a+)
但是,经历亲自测试,发现无论是读写操作,都用a+则不会出错,也不知道为什么,反正php是这样玩,我在Python试试,一开始用r+去读文件老不行,结果统一用a+却可以了,非常奇怪。
3、最后,所有编程语言都一样,无论是文件也好、数据库也好,人走带门,自行补上关闭连接的方法,都是默认不关闭~
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/yongh701/article/details/46908555