python文件替换指定字符串并输出位置

Python010

python文件替换指定字符串并输出位置,第1张

文件的模式有很多种不一一列举,r+表示打开一个文件用于读写。文件指针将会放在文件的开头。

def readFile(path):

#R

with open(path,"r+") as f:

for line in f:

print(line)

f.close()

print("读文件完成")

path="D:\\tmp\\manim\\file\\1.txt"

readFile(path)

查找字符串位置,str.find(target) 返回起始点位置如果是-1则表示不存在

"123WWW".find("WWW")

文件指针偏移到指定位置

#文件路径,原字符串,要替换成的目标字符串

def replaceText(filePath,sourceText,targetText):

if(len(sourceText)!=len(targetText)):

raise Exception("原始字符串长度与目标字符串不符,容易覆盖有用信息", sourceText,targetText)

with open(filePath,'r+') as f:

line=f.readline()

index=0

# 遇到中间空行的可以自行观察并不是空字符串

while ( line!=""):

print(line)

# 本行内字符串所在位置

windex=line.find(sourceText)

if(windex!=-1):

print("windex={}".format(windex))

print("当前位置:{},替换内容起点:{}".format(f.tell(),index+windex))

f.seek(index+windex)

f.write(targetText)

# f.flush()

f.seek(index)

# 返回当前文件指针,应该是新一行的开始位置

index=f.tell()

line=f.readline()

f.close()

print("文件修改完毕")

热门频道

首页

博客

研修院

VIP

APP

问答

下载

社区

推荐频道

活动

招聘

专题

打开CSDN APP

Copyright © 1999-2020, CSDN.NET, All Rights Reserved

python数据写入文件不完整

打开APP

解决python写入文件数据不全的问题 原创

2019-05-15 17:08:35

4点赞

琼雪染霜华

码龄6年

关注

如果利用语句

向txt文件中写入内容时,运行程序之后,

查看test.txt文件发现文件中的内容并不完整,

这时候就需要检查在代码的最后是否有这样一句话

这样就能截断程序与文件中的联系,

将缓存在内存中的内容全部写入到文件中

且能对test.txt文件进行删除等其他操作,

不必担心是否文件被程序占用的问题。

另一个解决方案就是利用with语句,

这样就不用单独使用close()语句,

因为with语句会自动调用该语句:

文章知识点与官方知识档案匹配

Python入门技能树基本技能数据文件读写

199361 人正在系统学习中

打开CSDN,阅读体验更佳

Python | 多线程处理数据并写入到文件,但数据内容存在残缺混乱的情况...

python—多线程之数据混乱问题 python全栈 1443 一、加入线程同步的原因由于同一进程中的所有线程都是共享数据的,如果对线程中共享数据的并发访问不加以限制,结果将不可预期,在严重的情况下,还会产生死锁在一个进程内的所有线程共享全局变...

Python爬虫写入excel数据内容不完整有空白行_Quest_sec的博客

百度没有看到任何相似问题,只好自己写了。观察发现,这几组数据是不完整的,少了一列,且恰恰是这一列爬到的数据是不完全正确的(既有片长又有上映年份)于是明确两点:(1)对于数据部分缺失的问题,我们想要的结果并不是直接舍弃整组数据,...

浅谈python写入大量文件的问题

今天准备把几个txt文件合并成一个文件时,用f.write方法写入时,发现程序执行完了,本应该十万行左右的txt记录,实际上只被写入了4k多行。 网上查了是因为程序执行速度太快,以至于读到内容还没有完全写入文件,文件就已经关闭了 方法一:加入缓冲区 f.flush() //operation os.

代码如下所示:

?#-*- coding: utf-8 -*-

?#code:myhasplqq.com

?#12-1.py

_mport sys

_eload(sys)

_ys.setdefaultencoding("gbk")

?

?

_mport sys,time

_ef print_one_by_one(text):

__ sys.stdout.write("\r " + " " * 60 + "\r") # r 光标回到行首

__ sys.stdout.flush() #把缓冲区全部输出

__ #print text

__ for c in text:

____ sys.stdout.write(c)

____ sys.stdout.flush()

____ time.sleep(0.1)

___? ?

_rint_one_by_one。