私は3秒ごとにテキストファイルを読み、クリーンアップし、別のテキストファイルとして書き込むスクリプトを作成しようとしています。元のテキストファイルは常に変更されています。これは、音楽プレイアウトプログラム、現在の曲のタイトルです。私はインターネットの周りにPythonコードのビットを収集し、自分のニーズにパーソナライズしました。今、私は完璧に動作するスクリプト、各コマンドとスケジューリングを持っています。しかし、元のファイルが再び変更されると、スクリプトはエラーを返します。どのようにこれを修正することができます任意のアイデア?絶え間なく変化するファイルを繰り返し検索して置き換えます。 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スクリプトを実行しています。 スクリプトが実行されたときに、行に「delete_lin」という単語が含まれていると、行全体が削除されます。それぞれの「行置き換え」項目は、それらが想定していたとおり、これらの単語を何も置き換えません。 ここに私のスクリプトです。
# -*- 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()
プログラムは 'for'ループから抜け出していますか?元のファイルの各行に対して3秒間寝ています。 –
私はそれが出ると信じています。なぜなら、 "open with"の前に印刷コマンドを追加すると3秒間印刷されるからです。元のファイルには1行しかないので、各行のスリープは問題ではありません。それは私に問題を与えているものではありますか? –
明快にするためには、ループの外側で 'sleep'ステートメントを必ず動かすべきですが、withショーの前に印刷すると問題はありません。その間にファイルを閉じていないため、有効ではなくなったファイルを読み込もうとしている可能性があります。ループの後に 'intext.close()'を追加してみてください。 –