码迷,mamicode.com
首页 > 编程语言 > 详细

【Python】文件读写操作

时间:2015-07-16 14:14:55      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:python   文件   读写   os   编码   

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

【Python】文件读写操作

标签:python   文件   读写   os   编码   

原文地址:http://blog.csdn.net/yongh701/article/details/46908555

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!