文件操作

文件操作流程:

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

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

3.关闭文件

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

 #!/usr/bin/env python
# -*- coding utf-8 -*-
# Author:qinjiaxi
f = open('hh','r',encoding = 'utf-8')#文件句柄
'''第一个参数是文件名,第二个是模式,第三个跟编码有关utf-8
1.r的是读是默认的模式
2.w是写要覆盖之前的内容这个要慎用
3.a是追加的意思在启动该模式写文件时不清空之前的文件内容,而是在后面追加内容
'''
#读
data = f.read()
#写
data2 = f.write("hello")
#append追加
data3 = f.write('hh')
f.close()
'''需求:
读取文件前10行
'''
#low loop
for index,line in enumerate(f.readlines()):
if index == 10:
print('----我是分割线-----')
continue
print(line.strip())
#high loop
count = 0
for line in f:
if count == 10:
print('----我是分割线-----')
count += 1
continue
print(line.strip())
count += 1

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

 #!/user/bin/env python
#-*-coding:utf-8 -*-
#Author: qinjiaxi
def text_create(name, msg):
path ="C:\\Users\\Administrator\\Desktop\\"
file = path + name + ".txt"
text = open(file, 'w')
text.write(msg)
text.close()
# text_create('1111', 'hello world')
def fiter(word, content = 'lame', p = 'Awesome'):
return word.replace(content, p)
def censored_text(name, msg):
clean_msg = fiter(msg)
text_create(name, clean_msg)
censored_text('Try', 'lame!lame!lame!')

句柄操作及缓冲进度模拟

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

文件修改

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

 f = open('hh', 'r', encoding='utf-8')
f_new = open('hh.bak', 'w', encoding='utf-8')
for line in f:
if line == '我的名字叫秦朗':
# if '我的名字叫秦朗' in line:
line = line.replace('我的名字叫秦朗','我的名字叫秦家喜')
f_new.write(line)
f.close()
f_new.close()

ql的python学习之路-day5的更多相关文章

  1. ql的python学习之路-day15

    前言:本节主要讲解的是文件路径 在实际的软件开发中会设计一个项目的文件目录,按照执行包bin.配置包config.核心包core等来设计,在执行包里面要运行核心包里的主程序mian,由于不在同一级的目 ...

  2. ql的python学习之路-day14

    前言:本节主要学习时间模块time.datetime python中的几种时间表示:1)时间戳  2)格式化的字符串时间 3)struct_time元组格式的时间 time.datetime模块源码: ...

  3. ql的python学习之路-day13

    前言:本节主要学习模块 一.模块的定义 模块:本质是.py结尾的python文件(文件名:test.py,对应的模块是:test),用来从逻辑上组织python代码(变量.函数.类.逻辑,本质是实现一 ...

  4. ql的python学习之路-day12

    前言:这一节主要学习json和pickle 背景: 相信大家在日常生活中都有接触大型的网络游戏,打游戏的时候都是自己在电脑上操作,自己刷怪升级:当然也会碰到中午去吃饭然后挂机的情况,让电脑自动的刷怪, ...

  5. ql的python学习之路-day11

    前言:本节主要学习python内置的方法 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:qinjiaxi from collections ...

  6. ql的python学习之路-day10

    前言:本节主要讲解迭代器和生成器 迭代器&生成器 一.生成器(generator) 循环占用大部分的容量内存,如果只需要循环前面的几个结果那怎么样做呢,在python中有一种一边循环一边计算的 ...

  7. ql的python学习之路-day9

    前言:本节主要学习装饰器 一.装饰器 定义:本质上是个函数,用来装饰其他函数:(就是为其他函数添加附加功能) 原则:1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 以上两点可以总 ...

  8. ql的python学习之路-day8

    前言:本节主要学习的是函数的全局变量和局部变量以及递归 一.全局变量和局部变量 定义在函数外并且在函数头部的变量,叫做全局变量,全局变量在整个代码中都生效. 局部变量只在函数里生效,这个函数就叫做这个 ...

  9. ql的python学习之路-day7

    函数与函数式编程 一.编程模式分为三种: 1.面向对象编程:类----->关键字class 2.面向过程编程:过程----->关键字def,没有return 3.函数式编程:函数----- ...

随机推荐

  1. 从"UDF不应有状态" 切入来剖析Flink SQL代码生成

    从"UDF不应有状态" 切入来剖析Flink SQL代码生成 目录 从"UDF不应有状态" 切入来剖析Flink SQL代码生成 0x00 摘要 0x01 概述 ...

  2. 手把手编写自己的PHP MVC框架实例教程

    1 什么是MVC MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式. MVC把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Contro ...

  3. 深入理解Java枚举

    深入理解Java枚举 重新认识Java枚举 老实说,挺羞愧的,这么久了,一直不知道Java枚举的本质是啥,虽然也在用,但是真不知道它的底层是个啥样的 直到2020年4月28日的晚上20点左右,我才真的 ...

  4. 异常:NoSuchFieldError: BEST_MATCHING_HANDLER_ATTRIBUTE

    出现的原因 pom 依赖之间不匹配导致 当前的 pom 调整后访问资源成功后面的 pom

  5. Struts2漏洞利用

    Struts漏洞合集 Struts-S2-013漏洞利用 受影响版本 Struts 2.0.0 - Struts 2.3.14.1 漏洞利用 任意命令执行POC: ${(#_memberAccess[ ...

  6. Netty(四):AbstractChannel源码解析

    首先我们通过一张继承关系的图来认识下AbstractChannel在Netty中的位置. 除了Comaprable接口来自java自带的包,其他都是Netty包中提供的. Comparable接口定义 ...

  7. 理解CAS算法在JAVA中的作用

  8. windows 7或以上系统的实用小工具,你知道么?

    今晚给大家介绍个实用的好工具,可以做简单的问题记录,再也不用截图加注释这么辛苦了····· 经测试,这东东在win7,2008 及2008R2里适用,也就是说,在win7以上的系统中才有.好了,下面直 ...

  9. 分享一批国内常用的tracker地址

    本期先分享一批国内能用地址,下一期我会出一期取代迅雷的下载的工具教程. udp://p4p.arenabg.com:1337/announce udp://tracker.tiny-vps.com:6 ...

  10. 数学--数论--HDU 5223 - GCD

    Describtion In mathematics, the greatest common divisor (gcd) of two or more integers, when at least ...