文件操作

文件操作流程:

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. Apk优化极致

    1. webp WebP格式,谷歌(google)开发的一种旨在加快图片加载速度的图片格式.图片压缩体积大约只有JPEG的2/3,并能节省大量的服务器宽带资源和数据空间.Facebook Ebay等知 ...

  2. QString 转换成 wchar 的一个小陷阱

    QString::toWCharArray(wchar_t * array) 其中 wchar_t * array 除了要分配内存之外,必须用 wmemset 初始化. 环境是 Visual Stud ...

  3. java中interrupt,interrupted和isInterrupted的区别

    文章目录 isInterrupted interrupted interrupt java中interrupt,interrupted和isInterrupted的区别 前面的文章我们讲到了调用int ...

  4. 二进制安装MySQL及破解密码

    二进制安装MySQL及破解密码 1.确保系统中有依赖的libaio 软件,如果没有: yum -y install libaio 2.解压二进制MySQL软件包 tar xf mysql-5.7.24 ...

  5. 李宏毅机器学习--PM2.5预测

    一.说明 给定训练集train.csv,要求根据前9个小时的空气监测情况预测第10个小时的PM2.5含量. 训练集介绍: (1).CSV文件,包含台湾丰原地区240天的气象观测资料(取每个月前20天的 ...

  6. js高阶函数的理解

    高阶函数:英文叫Higher-order function.JavaScript的函数其实都指向某个变量.既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数 ...

  7. 简单的环绕散射 Simple Wrap Diffuse From GPU GEMS1

    简单的环绕漫反射光照,实现起来特别简单,在Shader中加入以下几行:  float diffuse = max(0,dot(L,N));  float wrap_diffuse = max(0, ( ...

  8. (转)logback配置详解

    找到一篇很详细的关于logback配置的介绍: 贴上原文链接:logback使用配置详解 1.介绍 Logback是由log4j创始人设计的另一个开源日志组件,它当前分为下面下个模块: logback ...

  9. muduo网络库源码学习————Exception类

    Exception类是为异常捕获而设计,可以获得异常的信息以及栈的回溯信息 (原来的代码没有demangle成员函数,输出的格式比较难看,加了demangle成员函数,利用demangle成员函数可以 ...

  10. Spring源码学习01:IntelliJ IDEA2019.3编译Spring5.3.x源码

    目录 Spring源码学习01:IntelliJ IDEA2019.3编译Spring5.3.x源码 前言 工欲善其事必先利其器.学习和深读Spring源码一个重要的前提:编译源码到我们的本地环境.这 ...