文件操作

文件操作流程:

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. windows下部署.netcore+docker系列三 (unbuntu 18.4 下安装ftp)

    // 先更新下系统sudo apt-get update//安装ftpsudo apt-get install vsftpd// 启动 服务sudo service vsftpd start//ftp ...

  2. Asynchronous Disk I/O Appears as Synchronous on Windows

    Summary File I/O on Microsoft Windows can be synchronous or asynchronous. The default behavior for I ...

  3. 如何在linux服务器下快速安装配置Node.js

    简单粗暴,先用xshell或其他软件连接服务器 1.下载(此处版本根据官网版本自己修改) wget https://npm.taobao.org/mirrors/node/v8.9.3/node-v8 ...

  4. Recursion and System Stack

    递归是计算机科学中一个非常重要的概念,对于斐波那契那种比较简单的递归,分析起来比较容易,但是由于二叉树涉及指针操作,所以模仿下遍历过程中系统栈的情况. 以二叉树中序遍历为例演示: //二叉树定义 st ...

  5. python(For 循环语句)

    一.For循环 Python for 循环可以遍历任何序列的项目,如一个列表或者一个字符串或者字典等. 语法模式:for var in sequence: (1)从某个集合(列表等)里顺次取值 #遍历 ...

  6. muduo网络库源码学习————原子性操作Atomic.h

    原子性操作可以做到比互斥锁更小的开销,在多线程编程中原子性操作是非常有用的.Atomic.h文件位于muduo/base下,代码如下: // Use of this source code is go ...

  7. 最短路径树:Dijstra算法

    一.背景 全文根据<算法-第四版>,Dijkstra算法.我们把问题抽象为2步:1.数据结构抽象   2.实现 二.算法分析 2.1 数据结构 顶点+边->图.注意:Dijkstra ...

  8. Redis超详细总结

    NoSQL概述 一.数据存储的演化史 1.单机MySQL的美好年代 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付.在那个时候,更多的都是静态网页,动态交互类型的网站不多. 上述 ...

  9. Coursera课程笔记----Write Professional Emails in English----Week 4

    Request and Apology Emails(Week 4) How to Write Request Emails Write more POLITELY & SINCERELUY ...

  10. LFU C# 实现

    周六早上  做了下力扣的LRU 题目  后面接着看了LFU 缓存  难度提高了不少 首先 先说下 这2着 的差别把 LRU :最近 最少使用算法(Least  Recently Used).LRU 是 ...