Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Zip 아카이브(zipimport)에서 Python 가져오기 모듈

<시간/>

'zipimport' 모듈을 사용하면 ZIP 형식 아카이브에서 Python 모듈 및 패키지를 가져올 수 있습니다. 이 모듈은 또한 sys.path의 항목이 ZIP 파일 아카이브를 명명하는 문자열이 될 수 있도록 합니다. ZIP 아카이브에는 모든 파일이 있을 수 있지만 .py 및 .pyc 파일만 가져올 수 있습니다. 동적 모듈의 ZIP 가져오기는 허용되지 않습니다.

이 모듈의 기능은 먼저 'newdir' 디렉토리에 파일의 zip 아카이브를 구축하여 설명합니다. 다음 파일은 newdir 디렉토리에 있는 것으로 간주됩니다.

['guess.py', 'hello.py', 'impzip.py', 'mytest.py', 'prime.py', 'prog.py', 'tmp.py']

시스템 가져오기, globimport zipfilefiles =glob.glob("*.py")print(파일)zf =zipfile.PyZipFile('zipimp.zip', 모드='w') 파일의 파일용:zf.write( 파일)zf.close()

이제 기사의 나머지 부분에서 'zipimp.zip'을 사용합니다.

'zipimport' 모듈은 zipimporter 를 정의합니다. 다음 메소드가 정의된 클래스

zipimporter ()

이 메소드는 새로운 zipimporter 인스턴스를 생성하는 생성자입니다. ZIP 파일의 인수에 대한 경로가 필요합니다. 유효한 ZIP 아카이브가 아니면 ZipImportError가 발생합니다.

>>> 가져오기 zipimport>>> 가져오기 =zipimport.zipimporter('zipimp.zip')

찾기_모듈()

이 메소드는 지정된 모듈을 검색합니다. 모듈이 발견되면 zipimporter 인스턴스를 반환하고 그렇지 않으면 None을 반환합니다.

>>> ret=importer.find_module('prime')>>> ret>>> ret=importer.find_module('샘플')>>> ret>>> 인쇄 (ret)없음

get_code()

이 메서드는 지정된 모듈에 대한 코드 개체를 반환하고 모듈을 찾을 수 없으면 ZipImportError를 발생시킵니다.

>>> prog=importer.get_code('prime')>>> print (prog) at 0x022A4650, file "zipimp.zip\prime.py", line 1>

load_module()

이 메소드는 지정된 모듈을 로드합니다. 가져온 모듈을 반환하거나 찾지 못하면 ZipImportError를 발생시킵니다.

>>> importer =zipimport.zipimporter('zipimp.zip')>>> mod=importer.load_module('prog')30>>> mod.__name__'prog'>>> mod.__file__'zipimp. zip\\prog.py'>>> mod.__loader__

get_source()

이 메서드는 지정된 모듈의 소스 코드를 반환합니다.

>>> prog=importer.get_source('prime')>>> print (prog)def isprime(x):for i in range(2,x-1):if x%i==0:return False else:return Truef =int(input())l =int(input())primelist =list(filter(isprime, range(f,l)))print("prime1", "prime2", "composites") Composites=[(primelist[i-1], primelist[i],(primelist[i]-1)-primelist[i-1]) for i in range(1,len(primelist))]print (composites)