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、最后,全部编程语言都一样,不管是文件也好、数据库也好。人走带门,自行补上关闭连接的方法。都是默认不关闭~