2017-02-26 10 views
0

Pythonコードを実行しているときにValueError: I/O operation in closed fileが表示されています。これが問題の原因になっていると思います。ValueError:閉じたファイルのI/O操作

fn = './seenFrontPagePosts.txt' 

try: 
    f = open(fn, 'r+') 
except IOError: 
    f = open(fn, 'w+') 

try: 
    frontOld = json.loads(f.readline()) 
except: 
    frontOld = [] 

for post in redditFrontPage: 
    if str(post.subreddit) == subreddit: 
     print("We have a post on r/all! '{}'".format(post.title)) 
     if str(post.id) not in frontOld: 
      print("We haven't seen it before!") 
      message = post.reply(allMessage) 
      message.distinguish(sticky=True) 

      frontOld.append(str(post.id)) 
     else: 
      print("We have seen it before.") 
    f.seek(0) 
    f.truncate() 
    f.seek(0) 
    f.write(json.dumps(frontOld)) 
    f.close() 

エラーを修正するにはどうすればよいですか?構文がオフになっているのか、それとももっと複雑なのですか?

Traceback (most recent call last): 
    File "pythonCode.py", line 60, in <module> 
    f.seek(0) 
ValueError: I/O operation on closed file. 

答えて

1

あなたはファイルfをクローズされているリストredditFrontPageに、そのループ内の要素をループされています

はここで完全なエラーです。それで、次の反復では、ファイルに対して何らかの操作を実行しようとしていますが、クローズしています。

ループ内でファイルを開くか、ループ内のファイルを閉じる必要があります。

1

最も外側のループの1回の反復の後に、f.close()がファイルを閉じます。したがって、次回にf.seek(0)に到達すると、クローズされたファイルが検出され、エラーがスローされます。一番外側のループの最初にopenを実行する必要があります

関連する問題