ql的python学习之路-day5

文件操作

文件操作流程:

1.打开文件得到文件句柄并赋值变量

2.通过句柄对文件进行操作

3.关闭文件

打开的只是储存在计算机里的文件对象,必须赋值一个变量才能操作,变量通常用f表示,赋值f的文件对象也叫做文件句柄。

 1 #!/usr/bin/env python
 2 # -*- coding utf-8 -*-
 3 # Author:qinjiaxi
 4 f = open('hh','r',encoding = 'utf-8')#文件句柄
 5 '''第一个参数是文件名,第二个是模式,第三个跟编码有关utf-8
 6 1.r的是读是默认的模式
 7 2.w是写要覆盖之前的内容这个要慎用
 8 3.a是追加的意思在启动该模式写文件时不清空之前的文件内容,而是在后面追加内容
 9 '''
10 #
11 data = f.read()
12 #
13 data2 = f.write("hello")
14 #append追加
15 data3 = f.write('hh')
16 f.close()
17 '''需求:
18 读取文件前10行
19 '''
20 #low loop
21 for index,line in enumerate(f.readlines()):
22     if index == 10:
23         print('----我是分割线-----')
24         continue
25     print(line.strip())
26 #high loop
27 count = 0
28 for line in f:
29     if count == 10:
30         print('----我是分割线-----')
31         count += 1
32         continue
33     print(line.strip())
34     count += 1

 定义一个敏感词过滤器的函数

 1 #!/user/bin/env python
 2 #-*-coding:utf-8 -*-
 3 #Author: qinjiaxi
 4 def text_create(name, msg):
 5     path ="C:\Users\Administrator\Desktop\"
 6     file = path + name + ".txt"
 7     text = open(file, 'w')
 8     text.write(msg)
 9     text.close()
10 # text_create('1111', 'hello world')
11 def fiter(word, content = 'lame',  p = 'Awesome'):
12     return word.replace(content, p)
13 def censored_text(name, msg):
14     clean_msg = fiter(msg)
15     text_create(name, clean_msg)
16 censored_text('Try', 'lame!lame!lame!')

 句柄操作及缓冲进度模拟

 1 '''句柄操作'''
 2 f.tell()#打印当前光标位置
 3 f.seek()#默认回到起始位置0,括号里面可以带数字
 4 f.encoding#打印文件的编码方式
 5 f.flush()#强制将缓存的内容刷新到硬盘(缓存中有大小,默认当写入内容达到内容大小的时候才会刷新到硬盘中)
 6 f.truncate()#括号中不写清空文件;括号中带数字n表示从开头截取n个字符
 7 
 8 '''
 9 r+:读写追加到后面(用的最多)
10 w+:写读,清除内容写(平时用的少基本不会用)
11 a+:追加读(基本不用)
12 rb:二进制方式读,此模式用在网络传输中,python3中只能用二进制进行,python2可以用字符和二进制格式
13 二进制是指用二进制编码的而不是0101的格式
14 wb:以二进制的方式写入,字符串转为二进制需要编码----str.encode()
15 '''
16 '''模拟进度行缓冲效果'''
17 import sys,time
18 f = open('hh','w',encoding = 'utf-8')
19 for i in range(20):
20     sys.stdout.write('#')
21     time.sleep(0.1)
22     sys.stdout.flush()#强制刷新缓冲
23 #注:print打印是默认换行的,stdout是标准输出、stdout是标准输入,这个标准输入和输出是指往屏幕上输

 文件修改

思路:打开两个文件句柄,第一个以读的模式打开,第二个以写的模式打开,然后循环每行,再判断需要修改的内容,写入每行,直接贴源码:

1 f = open('hh', 'r', encoding='utf-8')
2 f_new = open('hh.bak', 'w', encoding='utf-8')
3 for line in f:
4     if line == '我的名字叫秦朗':
5     # if '我的名字叫秦朗' in line:
6         line = line.replace('我的名字叫秦朗','我的名字叫秦家喜')
7     f_new.write(line)
8 f.close()
9 f_new.close()
原文地址:https://www.cnblogs.com/qinlangsky/p/9446462.html