2017-02-25 1 views
-1

내가 파이썬 (언어와 상당히 경험) 및 파일 I/O, 다음과 같은 오류 가로 질러 땜질 해요 :python이이 열린 파일에 쓰지 않는 이유는 무엇입니까?

ValueError: I/O operation on closed file.

은 매우 간단합니다, 그래서이를 확인하기 위해 인쇄 문에 하락 outfile의 상태가 어떤 내 코드에 무슨 일이 있었보고 : 그래서 여기

import json 

data = {'thing1' : 'foo', 'thing2' : 'bar'} 

def writeToJSON(): 
    with open('data.json', 'w') as outfile: 
     print outfile.closed # outputs 'False', as expected 
     jsonifiedData = json.dumps(data, indent=4, sort_keys=True, separators=(',', ':'), ensure_ascii=False) 
     outfile.write(unicode(jsonifiedData)) # trace identifies this line as the issue 

writeToJSON() 

들여 쓰기가 깨끗한 것 같다이야?

파일은 런타임에 열리는 것처럼 보이지만, 해석기는 많은 양의 파일을 전달한 후 즉시 파일에 쓰는 것에 대해 불평합니다.

감사합니다.

편집 :

추가 된 전체 파일.

또한,이 blurp.py를 실행하는 완전한 출력 : 귀하의 측면에서 문제가 무엇

False 
Traceback (most recent call last): 
File "blurp.py", line 11, in <module> 
    writeToJSON() 
File "blurp.py", line 9, in writeToJSON 
    outfile.write(unicode(jsonifiedData)) 
ValueError: I/O operation on closed file 
+3

추적 오류를 표시 할 수 있습니까? –

+1

내 리눅스에서 이것을 체크하고, 모든 것이 괜찮은 것 같다. – wanderlust

+0

@wanderlust, hm ... 필자는 macOS에서 Python 2.7.13을 사용하고있다. 아마 시스템 일 이겠지만 ... 나는 내 리눅스 머신에서도 이것을 시도 할 것이다. – nrebhun

답변

0

이 기민하고 정확하게 whitespacing 문제의 가능성을 제안한다. 문제가되는 문자까지 이어지는 공백은 두 개의 탭과 네 개의 공백으로 구성되어 있습니다. 내 편집기에서는 볼 수 없었습니다. 4 개의 공백을 하나의 탭으로 바꾸면 문제가 해결되었습니다.

도와 주신 모든 분들께 감사 드리며이를 해결하기 위해 @ rlee827에 감사드립니다.

0

확실하지,하지만 나는 (파이썬 3.5) 동일한 코드 조각을 시도하고 일하고있어. data.json의

>>> import json 
>>> data = {'thing1' : 'foo', 'thing2' : 'bar'} 
>>> def writeToJSON(): 
     with open('data.json', 'w') as outfile: 
      print (outfile.closed) 
      jsonifiedData = json.dumps(data, indent=4, sort_keys=True, separators=(',', ':'), ensure_ascii=False) 
      outfile.write(str(jsonifiedData)) 
>>> writeToJSON() 
False 
>>> 

와 내용은 rlee827 @

{ 
    "thing1":"foo", 
    "thing2":"bar" 
} 
+0

나에게이 문제를 알려 주셔서 감사합니다. @ rlee827과 같이 보이는 부분이 공백 문제와 함께 올바른 방향을 향하고 있습니다. – nrebhun

관련 문제