Python学习笔记(15)-文件替换

程序1
在上一题的基础上扩展,用户可以随意输入要显示的行数。
如输入2:5表示打印第2行到第5行的内容;
输入:2表示打印从开头到第2行的内容;
输入4:表示打印从第4行到结尾的内容;
输入:表示打印全部的内容

方法2:

def file_read(filepath,line):
    #统计一共多少行
    maxline= len(open(filepath).readlines())
    if line.strip()==":":
        begin=1
        end=maxline
    (begin,end)=line.split(":")
    if begin=='':
        begin=1
    if end=='':
        end=maxline
        print(end)

    if begin==1 and end==maxline:
        t='的全文'
    elif begin==1:
        t='从开始到第%s行'%end
    elif end=='':
        t='从第%s行到结束'%begin
    else:
        t='从第%s行到第%s行'%(begin,end)

    print('文件%s%s的内容如下'%(filepath,t))

    with open(filepath, 'r') as fd:
        lnum = 0
        for line in fd:
            lnum += 1;
            if (lnum >= int(begin)) and (lnum <= int(end)):
                print(line)
                line
    fd.close()

file=input(r'请输入要打印的文件路径:如(E:/file4.txt)')
linetemp=input(r'请输入要打印的行数,如(2:5或:2或3:)')
file_read(file,linetemp)
python读文件的三个方法read()、readline()、readlines()详解
http://blog.csdn.net/u010039733/article/details/47858189

python 文件读写查找、替换相关简单操作
http://blog.csdn.net/liangrui1988/article/details/49539137

程序2

编写一个程序,实现“全部替换的功能”,程序运行图如下:

方法1:

def file_replace(filename,fstr,rstr):
    f=open(filename)
    content=[]
    count=0

    for eachline in f.read():
        if fstr in eachline:
            count=eachline.count(fstr)
            eachline=eachline.replace(fstr,rstr)
        content.append(eachline)

    decide=input('\n文件%s中共有%s个【%s】\n您确定'\
                 '要把所有的%s替换为%s吗?\n【yes or no】 '\
                 %(filename,count,fstr,fstr,rstr))

    if decide in ['yes','Yes','YES']:
        f=open(filename,'w')
        f.writelines(content)
        f.close()

filename=input("请输入文件名:")
fstr=input("请输入要替换的单词或字符:")
rstr=input("请输入要新的单词或字符:")
file_replace(filename,fstr,rstr)

方法2:

import re
#python 正则表达式 re findall 方法
# 能够以列表的形式返回能匹配的子串。

def find_str(filename,fstr):
    #统计找到的字符数
    count_fstr=0
    f=open('E:/%s'%filename)
    strtemp=f.readlines()
    for i in strtemp:
        counti=re.findall(fstr,i)
        if len(counti)>0:
            count_fstr+=len(counti)

    f.close()
    print("文件%s中共有%d个%s"%(filename,count_fstr,fstr))

def replase_str(filename,fstr,rstr):
    #替换
    print('开始替换....')
    f1=open('E:/%s'%filename,'r')
    fb1=open('E:/backup/%s'%filename,'w')
    strtemp2=f1.readlines()
    for i in strtemp2:
        fb1.write(i.replace(fstr,rstr))
    print('替换完毕!')
    f1.close()
    fb1.close()

filename=input("请输入文件名:")
fstr=input("请输入要替换的单词或字符:")
rstr=input("请输入要新的单词或字符:")
#统计字符
find_str(filename,fstr)
#判断是否替换
print('确定要把所有"%s"替换为"%s"吗?' % (fstr, rstr))
flag = input("YES/NO:  ")
if flag in  ['yes','Yes','YES']:
    replase_str(filename,fstr,rstr)
else:
    print('游戏结束!')

往期回顾

Python学习笔记(1)-介绍

Python学习笔记(2)

Python学习笔记(3)-数据类型

Python学习笔记(4)-循环

Python学习笔记(5)-循环

Python学习笔记(6)-循环

Python学习笔记(7)

Python学习笔记(8)-四个小程序

Python学习笔记(9)-函数

Python学习笔记(10)-回文联和统计入参

Python学习笔记(11)-递归

Python学习笔记(12)-字典

Python学习笔记(13)-集合

Python学习笔记(14)-文件

原文发布于微信公众号 - 软件测试经验与教训(udatest)

原文发表时间:2018-01-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小樱的经验随笔

51 Nod 1007 正整数分组【类01背包】

1007 正整数分组 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 将一堆正整数分为2组,要求2组的和相差最小。 例如:1...

29770
来自专栏深度学习之tensorflow实战篇

tensorflow(一)windows 10 64位安装tensorflow1.4与基本概念解读tf.global_variables_initializer

一.安装 目前用了tensorflow、deeplearning4j两个深度学习框架, tensorflow 之前一直支持到python 3.5,目前以更新...

38560
来自专栏ATYUN订阅号

帮助数据科学家理解数据的23个pandas常用代码

返回给定轴缺失的标签对象,并在那里删除所有缺失数据(’any’:如果存在任何NA值,则删除该行或列。)。

9040
来自专栏决胜机器学习

PHP数据结构(十一) ——图的连通性问题与最小生成树算法(1)

PHP数据结构(十一)——图的连通性问题与最小生成树算法(1) (原创内容,转载请注明来源,谢谢) 一、连通分量和生成树 1、无向图 设E(G)为连通图G的所...

48790
来自专栏小樱的经验随笔

Vijos P1116 一元三次方程求解【多解,暴力,二分】

一元三次方程求解 描述 有形如:ax^3+bx^2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三...

374120
来自专栏应兆康的专栏

100个Numpy练习【3】

翻译:YingJoy 网址: https://www.yingjoy.cn/ 来源: https://github.com/rougier/numpy-100...

453100
来自专栏linux、Python学习

数据可视化:Matplotlib的坐标轴管理

有兴趣的可以跟踪pyplot模块的figure函数,可以完整看见Figure的创建过程,由FigureManager创建与管理的。

51700
来自专栏数据结构与算法

07:清泉-改(prime+堆)

时间限制: 10000ms单个测试点时间限制: 1000ms内存限制: 512000kB描述 华北电力大学可以抽象为一张有n个点m条边的无向图. 现在所有的边都...

282100
来自专栏应兆康的专栏

100个Numpy练习【3】

Numpy是Python做数据分析必须掌握的基础库之一,非常适合刚学习完Numpy基础的同学,完成以下习题可以帮助你更好的掌握这个基础库。

51090
来自专栏人工智能LeadAI

Python 设计模式初探

本文章是在阅读精通Python设计模式(中文版)(https://book.douban.com/subject/26829015/),以及阅读 Mask R-...

36360

扫码关注云+社区

领取腾讯云代金券