所以我试图让一个脚本每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()
答案 0 :(得分:1)
修改原始文件后,文件引用intext
不再是有效文件。虽然路径相同,但实际文件已被修改。因此,您应该在intext.close()
循环结束时调用for
。要确保它实际上正在重新创建文件引用,请确保仅在循环外sleep
。