Errno 13 权限被拒绝:使用 zipf

Errno 13 Permission denied: with zipf

我有一个 python 程序,用于在文件夹 B(远程位置)中写入一个 zip 文件,其中包含文件夹 A (c:\workspace) 中的整个文件夹树。但是不知道为什么我不能写那个文件夹A.

从权限方面来说,我使用的是本地管理员帐户,我可以从该文件夹读取和写入。我已经尝试通过 cmd 强制 运行 具有管理员权限,但结果相同。从文件夹权限来看,作为管理员,我在该文件夹中拥有特殊权限。

这是我压缩整个文件夹内容(包括子文件夹)的部分:

zipf = zipfile.ZipFile(dst, 'w',zipfile.ZIP_DEFLATED)
                                for root, folders, files in os.walk(SRC):
                                        print ('root> %s' %root)
                                        #logging.debug('root> %s' %root)
                                        print ('folders> %s' %folders)
                                        #logging.debug('folders> %s' %folders)
                                        print ('files> %s'%files)
                                        #logging.debug('files> %s'%files)
                                        for foldername in folders:
                                                print ('foldername> %s' %foldername)
                                                foldername_path = os.path.join (root,foldername)
                                                print ('foldername_path> %s' %foldername_path)
                                                zipf.write(foldername_path)
                                        for filename in files:
                                                print ('filename> %s' %filename)
                                                filename_path = os.path.join (root,filename)
                                                print ('filename_path> %s' %filename_path)
                                                zipf.write(filename_path)
                                zipf.close()

这是输出:

root> c:\workspace\ folders> ['django-rev7543', 'www_server']

files>['backup.log']

foldername> django-rev7543

foldername_path>> c:\workspace\django-rev7543

Traceback (most recent call last):

File "C:\Scripts\master_backup.py", line 178, in backup_files()

File "C:\Scripts\master_backup.py", line 102, in backup_files email_error_notification(e)

File "C:\Scripts\master_backup.py", line 176, in email_error_notification

sys.exit(1) SystemExit: 1

在我保存错误的日志文件中:

2017-05-04 10:46:38,046 root DEBUG [Errno 13] Permission denied: 'c:\workspace\django-rev7543'

2017-05-04 10:46:38,078 root DEBUG not all arguments converted during string formatting

出于测试目的,我将该子文件夹 (django-rev7543) 定位为 zpif,我也可以在那里写入。在这个程序中,我正在写一个日志文件。

毕竟,我似乎可以读写,但是当我试图压缩任何文件夹或文件时,我的权限被拒绝了。 =/

这个脚本 运行 在另一台机器上没有问题,但没有乱用 C:/ 文件夹或子文件夹。

版本:

更新 1:

使用我之前使用的一个程序,使用 shutil.copy2 我能够毫无问题地复制,但它只是一个文件..

我发现 python 2.5 下的 zipf 不会压缩空文件夹,但是 OSError return 这是 Errno 13 Permission denied.

要不受任何限制地使用 zipf,它至少应该在 python 3.4 中使用(没有检查它是否适用于 3.4 之前的所有版本的 python 3)。