我有一个txt文件,如:
first.txt
约翰尼^ ^管道工NY;安娜^ ^医生华盛顿;凯特^ ^管理员佛罗里达州
然后我在文件夹中有多个output3 * .txt文件,数据一直在保存:
哈哈管道工布拉布拉;
其他人可能会像:
哈哈医生blabla;哈哈管理员blabla
如果output3 * .txt文件中没有单词“exit” - 它等待几秒钟,然后在每个没有“退出”内部的文件中删除haha和blabla之间的那些单词(管道工医生管理员)第一个txt文件中的那些单词。
file_names3 = glob.glob(pathtemp+"/output3*.txt")
abort_after = 1 * 5
start = time.time()
while True:
if not file_names3:
break
delta = time.time() - start
if delta >= abort_after:
with open(path+"/"+statuses, "a") as statuses:
statuses.write("-----------------\n ERRORS:\n\n-----------------\n")
for file_name in file_names3:
statuses.write("%s" % file_name + " - file not done: ")
with open(file_name, 'r') as prenotf:
reader=prenotf.read()
for "haha" in reader:
finding=reader[reader.find("haha")+5:reader.find("blabla")]
statuses.write(finding)
break
time.sleep(3)
for file_name in file_names3:
with open(file_name, "r") as zz:
if "exit" in zz.read(): #<<<--- test data
file_names3.remove(file_name)
print ("\n ############# List of files still Waiting to be done:\n")
print (file_names3)
我忙着寻找哈哈和布拉布拉之间的那些话。
谢谢你的帮助。
答案 0 :(得分:0)
当您在对象进行迭代时更改对象时,会弄乱固有的位置指针。这个指针是绝对的。如果从文件中删除10个字符,则文件的其余部分会向上移动,但指针不会更改。这有效会跳过接下来的10个字符。
你的逻辑分为两部分,然后是:
它看起来像这样:
temp_file = open("tempfile.txt", 'w')
active = True
for line in <your input>:
if "haha" in line:
active = True
elif "blabla" in line:
active = False
elif active
temp_file.write(line)
您可以将其用于您的程序的当前逻辑吗?