文件操作

文件操作流程:

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. numpy+sklearn 手动实现逻辑回归【Python】

    逻辑回归损失函数: from sklearn.datasets import load_iris,make_classification from sklearn.model_selection im ...

  2. vim的常用指令

    vim的常用指令如下: 光标运动: h,j , k, l (上/下/左/右) 删除字符: x 删除行 : dd 模式退出 : Esc,Insert(或者i) 退出编辑器 : q 强制退出不保存: q! ...

  3. LDA概率主题模型

    目录 LDA 主题模型 几个重要分布 模型 Unigram model Mixture of unigrams model PLSA模型 LDA 怎么确定LDA的topic个数? 如何用主题模型解决推 ...

  4. 使用cat命令清空文件

    比如要清空 /www/aaa.txt cat /dev/null > /www/aaa.txt; 即可.

  5. failed to open stream :HTTP request failed 解决方法

    用curl抓取,不要用file_get_contents(); 前者比后者效率高一点

  6. (二)PL/SQL特殊符号

    PL/SQL标识符 PL/SQL标识符是常量,变量,异常,过程,游标和保留字.标识符是由一个字母后面可以跟更多的字母,数字,美元符号,下划线和数字符号,并且不得超过30个字符. 默认情况下,标识符不区 ...

  7. 查看现有的 cipher suite

    openssl ciphers [-v] [-ssl2] [-ssl3] [-tls1] [cipherlist]

  8. zabbix管理,添加监控主机

    一:添加本机为监控主机  二.监控其他Linux主机agent端 1.环境部署 [root@localhost ~]# hostname agent.zabbix.com[root@localhost ...

  9. JavaScript 后台获取数据 - HTTP203 Advent(中文字幕)

    如果关注过 Google 相关的开发技术,对 HTTP203 这个栏目应该不陌生. 这是 HTTP203 圣诞节的特别版! Jake(@jaffathecake)和 Surma(@DasSurma)有 ...

  10. 字符串后面空字符的问题(char*与string的转换)

    今天AC了不少题,困扰已久的Time limit error 也解决了,记住下次用STL容器的时候一定要清空容器. 其次是字符数组与字符串的浅谈. 字符数组是以'\0'结尾的,所以在字符数组赋值给字符 ...