with open使用方法

来源:互联网 发布:js div display none 编辑:程序博客网 时间:2024/06/10 04:52

昨晚在级群有个同学提出一个问题需要去读文件每一行的倒数18个字符并写到另一个文件中,一开始以为用Python三行代码应该能够解决,但写了二十分钟才真正解决问题。

首先需要知道的是要使用到两个模块。codecs和chardet

完整代码如下:(把text.txt中需要的字符串读取到text2.txt中)

import codecsimport chardetwith open(r'D:\py\text.txt','rb') as f1:    charset = chardet.detect(f1.read())with codecs.open(r'D:\py\text.txt','r',charset['encoding']) as f1,codecs.open(r'D:\py\text2.txt','w','utf-8')as f2:    for line in f1.readlines():        f2.write(line[-18:])
codecs的使用方法参考代码。

with.codecs.open()与with open()这两种方法使用环境不一样,其中第一种是可以定义读文件时候的编码方式。(每个txt文件都有对应的一个编码方式)

而要获取文件的编码方式需要借助chardet模块(这个模块好像要自行安装,之前我曾经安装过,所以我没有提示要安装)

chardet.detect()返回的是一个字典格式。

{'confidence': 1.0, 'language': '', 'encoding': 'UTF-16'}     这是我的text.txt返回的字典

其中第一个键值是可能性,第二个键值是编码方式。字典内容说明这个文件的编码方式以及该可能性大小。

最后说明一下with open的使用格式。

with open(’文件名‘,‘读写方式’)as f:    f.read()  #读取是整个文件    f.readline()  #读取第一行    f.readlines()    #读取每一行,可以结合for使用(参考我上述完整代码),记得都要带方法都要带括号,不然返回的是内存地址

还有,Python有回收机制,f.close()在程序结束时候会调用(在callback回调函数里面??)

最后参考了一些网上大神的帖子。http://www.cnblogs.com/ArsenalfanInECNU/p/4811643.html(编码方式)


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 衣架打小孩淤青怎么办 1岁宝宝有痰咳嗽怎么办 1岁宝宝咳嗽有痰怎么办 孩子爱动手打家长怎么办 不小心有了孩子该怎么办 2岁多宝宝干咳怎么办 2岁宝宝咳嗽无痰怎么办 打了孩子后悔了怎么办 12小孩脾气很犟怎么办 被学生气着了怎么办 1岁宝宝轻微咳嗽怎么办 4岁宝宝突然呕吐怎么办 4岁儿童突然呕吐怎么办 四岁儿童90身高怎么办 24个月宝宝缺钙怎么办 狗狗总是要人陪着玩怎么办 成年了还是很皮怎么办 三岁儿子太调皮怎么办 10个月宝宝粘人怎么办 6个月宝宝粘人怎么办 9个月宝宝偏矮怎么办 1岁宝宝粘人爱哭怎么办 宝宝2岁半胆小怎么办 5岁宝宝超级粘人怎么办 狗狗吃饭要人喂怎么办 十个月宝宝认人怎么办 一岁宝宝粘人怎么办 9个月宝宝粘妈妈怎么办 一岁的宝宝呕吐怎么办 宝宝一岁八个月太粘人了怎么办 六个月的宝宝好粘人怎么办 两岁半宝宝说话突然结巴了怎么办 1岁宝宝突然呕吐怎么办 宝宝吃坏了呕吐怎么办 1岁宝宝吃饭爱玩怎么办 7岁儿童半夜呕吐怎么办 一个月宝宝粘人怎么办 2岁宝宝太粘人了怎么办 8个月宝宝很粘人怎么办 7个月宝宝呕吐是怎么办 一个月婴儿粘人怎么办