重复搜索和替换不断变化的文件。蟒蛇

时间:2016-08-10 18:09:09

标签: python windows

所以我试图让一个脚本每3秒钟运行一次,以读取文本文件,清理它并写入另一个文本文件。原始文本文件总是在变化。它来自音乐播出节目,即当前的歌曲标题。我在互联网上收集了一些python代码并根据我的需要对它们进行个性化。现在我有一个完美的脚本,每个命令和调度。但是当原始文件再次更改时,脚本会出错。知道如何解决这个问题吗?

Traceback <most recent call last>:
File "radio_script.py", line 29, in <module>
   executeSomthing<>
File "radio_script.py", line 10, in executeSomething
  for line in intext:
IoError: [Errno 9] Bad file descriptor

我在Windows上运行python脚本。 因此,当脚本运行时,如果一行包含任何&#34; delete_lin&#34;单词整行被删除。虽然每个&#34;线代替&#34;条目替换那些没有任何内容的单词,正如它们应该的那样。 这是我的剧本。

# -*- coding: utf-8 -*-
delete_lin = ['VP', 'VH', 'VT', 'VB', 'VS', 'BG']
import time
import os
def executeSomething():
    with open('current.txt', 'r') as intext, open('currentedit.txt', 'w') as outfile:
       for line in intext:
         if not any(delete_lin in line for delete_lin in delete_lin):
           line = line.replace('(email)', "")                           
           line = line.replace('_AO VIVO', "")
           line = line.replace('Ao Vivo', "")
           line = line.replace('AO VIVO', "")
           line = line.replace('(04)', "")
           line = line.replace('2016', "")
           line = line.replace('2015', "")
           line = line.replace('2014', "")
           line = line.replace('2013', "")
           outfile.write(line)
           outfile.flush()
           intext.flush()
           print 'Pause'
           time.sleep(3)

while True:
    executeSomething()

1 个答案:

答案 0 :(得分:1)

修改原始文件后,文件引用intext不再是有效文件。虽然路径相同,但实际文件已被修改。因此,您应该在intext.close()循环结束时调用for。要确保它实际上正在重新创建文件引用,请确保仅在循环外sleep