0
이것은 내가 찾고있는 코드입니다. zip을 임시 디렉토리로 추출한 다음 Pil "Image.open"을 사용하여 추출 된 파일.Python PIL이 이미지 대신 디렉토리를 가져오고 있습니다.
import os
import re
import shutil
import zipfile
import tempfile
from natsort import natsorted
from epubpack import epubpack
from PIL import Image
import uuid
def cbz2epub3(cbzfname, epubfile='out.eub', tmpldir='template', mangamode=False, singlepage=False):
# working dir
imgdir = tempfile.mkdtemp()
workdir = tempfile.mkdtemp()
# convert
img_files = importImageFromZip(cbzfname, imgdir, mangamode=mangamode, singlepage=singlepage)
title = guessTitle(cbzfname)
ttbl = genTemplateInfo(img_files, title, mangamode=mangamode)
epubMakeTree(tmpldir, workdir, ttbl)
for fname in os.listdir(imgdir):
shutil.move(os.path.join(imgdir, fname), os.path.join(workdir, 'EPUB', 'Image'))
epubpack(workdir, epubfile)
# cleanup
os.rmdir(imgdir)
shutil.rmtree(workdir)
def importImageFromZip(cbzfname, outdir, mangamode=False, singlepage=False):
# extract
cbz = zipfile.ZipFile(cbzfname,'r')
fnames = cbz.namelist()
cbz.extractall(outdir)
cbz.close()
# change name
print "Src images: %d" % len(fnames)
nlenw = len(str(len(fnames)))
new_fnames = []
idx = 0
for fname in natsorted(fnames):
ext = os.path.splitext(fname)[1]
src = os.path.join(outdir, fname)
if fname == 'Thumbs.db':
os.remove(src)
continue
idx += 1
im = Image.open(src)
는하지만 오류가 밖으로 "SRC는"디렉토리입니다,하지만 그 os.path.join 파일 이름을 줄 것이다 읽어 말.
Traceback (most recent call last):
File "gui.py", line 40, in OnDropFiles
output = cbz2epub3(filename, epubname, mangamode=mangamode, singlepage=singlepage)
File "/home/dave/Documents/cbz2epub3-master/cbz2epub3.py", line 33, in cbz2epub3
img_files = importImageFromZip(cbzfname, imgdir, mangamode=mangamode, singlepage=singlepage)
File "/home/dave/Documents/cbz2epub3-master/cbz2epub3.py", line 62, in importImageFromZip
im = Image.open(src)
File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 1996, in open
fp = builtins.open(fp, "rb")
IOError: [Errno 21] Is a directory: '/tmp/tmpjsosRY/test/
아무도 도와 줄 수 있습니까?
'os.listdir'은 파일과 디렉토리를 모두 나열한다고 생각합니다. 거기에 폴더가 있습니까? – Salem
'im = Image.open (src)'라인을 호출하기 전에'fname' 변수를 출력하여 비어 있지 않은지 확인할 수 있습니까? – miindlek
zip 파일의 구조를 게시하십시오. – miindlek