您的位置:首页 > 编程语言 > Python开发

13. Python 文件操作

2017-10-27 12:29 99 查看
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(),在执行完成后,会自动关闭文件。

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

方法二:(python有个自带的方法)
import linecache
count = linecache.getline(filename,linenum)

举例:
import linecache
count = linecache.getline('1.txt',4) ##下标为3
print count
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 文件处理