From f2238b16a64a48b245db6c88f98550bd363b6edd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Jastrz=C4=99bski?= Date: Tue, 15 Sep 2015 17:44:55 +0200 Subject: [PATCH] os.access acts unpredictably on Windows --- kcc/comic2ebook.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/kcc/comic2ebook.py b/kcc/comic2ebook.py index dfb3994..f777a92 100755 --- a/kcc/comic2ebook.py +++ b/kcc/comic2ebook.py @@ -28,7 +28,7 @@ from urllib.request import Request, urlopen from re import sub from stat import S_IWRITE, S_IREAD, S_IEXEC from zipfile import ZipFile, ZIP_STORED, ZIP_DEFLATED -from tempfile import mkdtemp, gettempdir +from tempfile import mkdtemp, gettempdir, TemporaryFile from shutil import move, copytree, rmtree from optparse import OptionParser, OptionGroup from multiprocessing import Pool @@ -1215,10 +1215,13 @@ def checkPre(source): rmtree(os.path.join(root, tempdir), True) # Make sure that target directory is writable if os.path.isdir(source): - writable = os.access(os.path.abspath(os.path.join(source, '..')), os.W_OK) + src = os.path.abspath(os.path.join(source, '..')) else: - writable = os.access(os.path.dirname(source), os.W_OK) - if not writable: + src = os.path.dirname(source) + try: + with TemporaryFile(prefix='KCC-', dir=src): + pass + except: raise UserWarning("Target directory is not writable.")