Python常用操作(二)之文件处理

上一篇主要讲了使用Python进行文件的读取工作,这里在此基础上对上一篇进行补充~

文件处理操作

一、使用迭代器访问文件

f = open("haha.txt")
iter_f = iter(f)    //迭代器
lines = 0
for line in iter_f:
    lines += 1
print lines

二、文件指针

文件指针的用处是为了进行重复的读取~
(1)操作文件指针可以通过seek方法:
  seek(offset, whence):移动文件指针
  offset:偏移量,可为负数
  whence:偏移相对位置
(2)偏移相对位置为os模块当中的SEEK_SET、SEEK_CUR、SEEK_END:
  os.SEEK_SET:表示文件的相对起始位置
  os.SEEK_CUR:表示文件的相对当前位置
  os.SEEK_END:表示文件的相对结束位置

import os  #导入os模块
f = open('123456789.txt')  #首先先创建一个文件对象,打开方式为w
print f.read(3)  #用read()方法读取并打印
print f.tell()  #打印出文件指针的位置
f.seek(0, os.SEEK_SET)  #用seek()方法操作文件指针(把文件指针移到文件起始位置并移动0)
print f.read(3)  #用read()方法再次读取并打印
print f.tell()  #打印出文件指针的位置
f.close()  #关闭文件
#打印结果:123
#         3
#        123
#         3

三、文件编码方式

(1)编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
(2)Python2在写入文件的时候经常会出现因字符转码错误而不能正常运行的问题,很多教程用到的解决办法是重载Python默认编码:

import sys
reload(sys)
sys.setdefaultencoding('utf8')

(3)上面的方法比较激进,python文件编码默认为ASCII码,如果需要进行改变的话我们可以尝试借助Python的codecs模块

# 打开文件

import codecs  
with codecs.open('/cxt/gbk.txt', 'r', 'gbk') as f:  
    f.read() # u'\u6d4b\u8bd5'  
# 以gbk编码打开文件/cxt/gbk.txt,读取后直接自动转换成python内部的unicode编码。

# 写入文件

f = codecs.open('file', 'w', 'utf-8')
f.write('something')
f.close()

四、os模块

os方法说明
os.access(path, mode)判断文件权限F_OK, R_OK ,W_OK, X_OK
os.listdir(path)返回当path路径下所有文件名组成的列表
os.remove(path)删除文件
os.rename(old, new)修改文件或者目录名
os.mkdir(path[, mode])创建目录
os.makedirs(path[, mode])创建多级目录
os.removedirs(path)删除多级目录
os.rmdir(path)删除目录(目录必须空目录)
os.path方法说明
os.path.exists(path)当前路径是否存在/也可以判断是否有该文件
os.path.isdir(s)是否是一个目录
os.path.isfile(path)是否是一个文件
os.path.getsize(filename)返回文件大小/返回目录文件大小
os.path.dirname(p)返回路径的目录
os.path.basename(p)返回路径的文件名

参考资料:www.imooc.com(慕课网)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值