Я работаю над проектом 9.5 AI Sweigart «Автоматизация скучных вещей с помощью python».
Программа предназначена для резервного копирования текущей папки в ZIP-файл.
Я завершил кодирование, и оно отлично работает, когда я запускаю файл .py через Terminator.
Вот мой код:
#!/usr/bin/env python3
# backupToZip.py - backup whole folder into a ZIP file whose name increments
import zipfile, os
def backupToZip(folder):
folder = os.path.abspath(folder) #make sure it's abspath
# Figure out filename
number = 1
while True:
zipFilename = os.path.basename(folder) + '_' + str(number) + '.zip'
if not os.path.exists(zipFilename):
break
number = number + 1
# create the ZIP file
print('Creating %s...' % (zipFilename))
backupZip = zipfile.ZipFile(zipFilename, 'w')
# walk the entire folder tree and compress the files in each folder.
for foldername, subfolders, filenames in os.walk(folder):
print('Adding files in %s...' % (foldername))
# add the current folder to the ZIP file
backupZip.write(foldername)
for filename in filenames:
newBase = os.path.basename(folder) + '_'
if filename.startswith(newBase) and filename.endswith('.zip'):
continue # don't backup the backup ZIP files
backupZip.write(os.path.join(foldername, filename))
backupZip.close()
print('Done')
backupToZip('.')
Тогда я бы хотел упростить использование - запустить файл, дважды щелкнув по нему.
Затем я изменил имя файла с backupToZip.py на backupToZip.py.command.
Авторизовал файл с помощью 'chmod + x backupToZip.py.command' в Терминаторе.
Затем я попытался дважды щелкнуть файл, но появляется сообщение об ошибке:
Last login: Wed Nov 7 22:33:19 on ttys001
huxiaorendeMacBook-Pro-2:~ huxiaoren$ /Users/huxiaoren/python/automate/project_9.5_backupToZip/backupToZip.py.command ; exit;
Creating huxiaoren_5.zip...
Adding files in /Users/huxiaoren...
Traceback (most recent call last):
File "/Users/huxiaoren/python/automate/project_9.5_backupToZip/backupToZip.py.command", line 34, in <module>
backupToZip('.')
File "/Users/huxiaoren/python/automate/project_9.5_backupToZip/backupToZip.py.command", line 30, in backupToZip
backupZip.write(os.path.join(foldername, filename))
File "/Users/huxiaoren/miniconda3/lib/python3.7/zipfile.py", line 1721, in write
with open(filename, "rb") as src, self.open(zinfo, 'w') as dest:
PermissionError: [Errno 13] Permission denied: '/Users/huxiaoren/.rnd'
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.
Я понял, что, возможно, программа не может распознать текущий путь к папке с помощью '.'. Затем я изменяю последнюю строку кода с:
backupToZip('.')
до:
folder = os.getcwd()
backupToZip(folder)
Снова всплывает ошибка разрешения:
Last login: Wed Nov 7 22:35:55 on ttys001
huxiaorendeMacBook-Pro-2:~ huxiaoren$ /Users/huxiaoren/python/automate/project_9.5_backupToZip/backupToZip.py.command ; exit;
Creating huxiaoren_7.zip...
Adding files in /Users/huxiaoren...
Traceback (most recent call last):
File "/Users/huxiaoren/python/automate/project_9.5_backupToZip/backupToZip.py.command", line 35, in <module>
backupToZip(folder)
File "/Users/huxiaoren/python/automate/project_9.5_backupToZip/backupToZip.py.command", line 30, in backupToZip
backupZip.write(os.path.join(foldername, filename))
File "/Users/huxiaoren/miniconda3/lib/python3.7/zipfile.py", line 1721, in write
with open(filename, "rb") as src, self.open(zinfo, 'w') as dest:
PermissionError: [Errno 13] Permission denied: '/Users/huxiaoren/.rnd'
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.
Как я могу выяснить, где проблема?