2012-05-08 3 views
2

아래 함수는 파이썬 샘플 코드 the Python gzip module docs을 기반으로합니다. 그것은 기본 파이썬 2.6.x와 우분투 10.04에서 안정적으로 실행됩니다. 그러나 우분투 11.04에서는 코드가 @writelines()에 실패합니다.Python gzip이 우분투 11.04에서 실패했습니다.

하나의 11.04 시스템에서 오류 메시지가 'module' object has no attribute 'BufferedIOBase'으로보고되었습니다. 다른 11.04 기계에서 다른 메시지 No module named numpy을보고했습니다. 그러나, numpy 패키지는 두 시스템에 모두 설치됩니다.

11.04에서 누락 된 파이썬 종속성이나 기타 문제점을 알고있는 사람이 있습니까?

def _compress(inp,out): 
    import gzip 
    f_out = gzip.open(out,'wb') 
    f_in = open(inp,'rb') 
    f_out.writelines(f_in) 
    f_out.close() 
    f_in.close() 
    os.unlink(inp) 
+0

가능한 중복 [igraph을 가져올 때 AttributeError를 해결하는 방법?] (http://stackoverflow.com/questions/6315440/how-to-solve-attributeerror-when- importing-igraph) – krock

+1

'numpy'는'gzip'과 무슨 관련이 있습니까? 당신은 틀린 장소에서 실수로 당신을 찾고 있습니다. – vartec

+0

'io.py' 파일이나'io/__ init __. py' 파일을 가져 왔습니까? –

답변

3

오류 메시지 No module named numpy은이 문제와 관련이 없습니다. 다른 버그로 인해이 문제가 발생했습니다. 이를 추적하려면 sys.path 값을 인쇄하여 Python이 모듈을 검색 할 경로를 확인하십시오. Numpy가 설치되어있을 수도 있지만 sys.path에 포함 된 장소가 아닐 수도 있습니다. 그렇게하지 않으면 주요 문제로 돌아갑니다.

  1. 파이썬 버전을 확인하십시오. 내 생각 엔 11.04는 2.7.x와 함께 제공됩니다.

  2. writelines()은 이진 데이터를 호출하는 이상한 방법입니다. 더욱이 매개 변수는 파일 객체가 아닌 일련의 문자열이어야합니다. 이 코드를 대신 사용해보십시오 :

    f_out.write(f_in.read()) 
    
  3. 파일 크기에 따라 많은 메모리를 사용합니다. 대신 루프를 시도 :

    while True: 
        data = f_in.read(10240) 
        if not data: break 
        f_out.write(data) 
    
+0

예, 11.04는 Python 2.7x를 실행 중입니다. 루프를 제안 해 주셔서 감사합니다. 이 텍스트 파일은 꽤 큽니다. 나는 너의 대안을 시도 할 것이다. Tom – tahoar

+0

sys.path에서 불필요한 io.py를 제거한 것과 마찬가지로이 문제가 해결되었습니다. 둘 다 잘 실행됩니다. 감사. – tahoar

관련 문제