5. Python 文件操作

1. 简单的读取文件内容(codecs的使用)
当前目录下有个1.txt的文档
打开文件的步骤:
import codecs
(1)open文件
f = codecs.open('1.txt')
(2)文件操作(读或写)
print (f.read())
(3)关闭文件
f.close()

这个方法等于把整个文件拿出来,当成一个字符串来使用,后期用正则匹配的时候,非常方便、适用。
【codecs 这个模块,是open打开文件的时候,引入这个模块,用途:解决文件乱码的。推荐以后在读写的时候使用这个模块】
如果设:
text = f.read()
查看text的类型:
print (type(text))
查看到类型是"str"(字符串)

类型是字符串,我们就可以使用字符串的方法:
result = text.replace('1', 'A')
print (result)

2. 写入一个新的文件
import codecs
f = codecs.open('2.txt', 'w')
f.write('hello world!\n')
f.write('hello {0}!\n'.format('LLN'))
f.write('you cool!\n')
f.write('I like it!\n')
f.close()

注释:
# open(filename, mode)
# mode有几个参数:
r 读取
w 写入
b 二进制
a 追加

3. 文件操作常用用法
readlins() 方法:
此方法,读取文件,把每一行都变成单独的字符串,并放入到一个列表中去,第一行为列表的第一个元素,以此类推。
举例:
import codecs
f = codecs.open('1.txt', 'rb')
t_list = f.readlines()
print (t_list[0]
print (f.readlines())
f.close()
返回结果:
1111111111 第一行
[]
注释:
为什么 print (f.readlines()) 会返回空列表?
因为之前readlines()已经将文件读到末尾了,下次再用readlines()方法读的时候,会从文章最末尾开始读取,所以结果为[]。

readline() 方法:
此方法,读取文件,每一个readline()只读取一行,光标会停留在下一行的开头;
在执行下一个readline()的时候,会从光标处读取当前这一行。
import codecs
f = codecs.open('1.txt', 'rb')
print (f.readline())
print (f.readline())
print (f.readline())
print (f.readline())
print (f.readline())
f.close()
返回结果:
1111111111

aaaaaaaaaa

2222222222

bbbbbbbbbb

3333333333

next()方法:
对比:
readline() 读取文件一行内容,返回一个字符串
next() 读取文件下一行内容返回一个字符串

write()方法和writelines()方法:
write() 必须传入一个(整个)字符串
writelines() 必须传入一个序列

举例1:
import codecs
f = codecs.open('2.txt', 'wb')
f.write('hello lili\n cccccccc\n aaaaaaaaaa\n') ## 一个整的字符串
f.close()


举例2:
import codecs
f = codecs.open('2.txt', 'wb')
f.writelines(['aaaaa\n','bbbbbbbb\n','cccccccc']) ##传入一个列表(序列)
f.close()
tell()方法:
提示当前光标落在哪个字符位置上
举例:
import codecs
f = codecs.open('3.txt', 'wb')
f.writelines(['aaaaa\n','bbbbbbbb\n','cccccccc'])
print f.tell()
f.close()
返回:
23

seek()方法:
指定光标的位置,seek(0)是移动到文章开头
举例:
import codecs
f = codecs.open('3.txt', 'wb')
f.writelines(['aaaaaaaaaaaaaaa\n','bbbbbbbbbbbbb\n','cccccccc\n'])
print f.tell()
f.seek(0)
f.write('sssssssssssssssss') ##重新写入
f.close()
返回结果:
sssssssssssssssssbbbbbbbbbbbb
cccccccc

从结果看出,将光标移动到开头后,并在开头写入字符串,并替换掉原有字符串对应的位置的字符,文件总长度不变。

4.with用法
举例:
import codecs
with codecs.open('1.txt', 'rb') as f:
print (f.read())

这种方法不需要写close(),在执行完成后,会自动关闭文件。

拓展:
打印文件指定行的内容:
方法一(enmuerate):
import codecs
with codecs.open('1.txt', 'rb') as f:
for line, value in enumerate(f):
if line == 4-1: #打印第四行的内容,下标为3的
print (value)

方法二:(python有个自带的方法,linecache)
import linecache
count = linecache.getline( filename, linenum)
举例:
import linecache
count = linecache.getline('1.txt',4) ##下标为3
print count


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值