#python
#python
Вопрос:
Я написал этот код, и он завершается ошибкой в строке 11 команды «target_dir» с недопустимым синтаксисом. У меня есть виртуальная машина Ubuntu, и я просто скопировал и вставил код, и он работал там, но не в моем win7, и я не уверен, почему. Я читал другой вопрос с похожим кодом, но в нем была другая ошибка, и заметил, что кто-то сказал, что некоторые из этих команд устарели, поэтому мне просто интересно, так ли это, и я бы просто бросил эту книгу и перешел к другой, которую я только что получил.
Заранее спасибо за помощь,
# Filename: backup_ver1.py
import os
import time
# 1. The files and directories to be backed up are specified in a list.
source = ['"D:\Warlock"', 'C:\Druid'
# Notice we had to use double quotes inside the string for names with spaces in it.
# 2. The backup must be stored in a main backup directory
target_dir = r'C:Backup' # Remember to change this to what you will be using
# 3. The files are backed up into zip file.
# 4. The name of the zip archive is the current date and time
target = target_dir os.sep time.strftime('%Y%m%d%H%M%S') '.zip'
# 5. We use the zip commnad to put the files in a zip archive
zip_commnad = "7z a -tzip {0} {1}" .format(target, ' '.join(source))
print(zip_command)
#Run the backup
if os.system(zip_command) == 0:
print('Successful backup', target)
else:
print('Backup FAILED')
Ответ №1:
source = ['"D:\Warlock"', 'C:\Druid'
отсутствует конечная скобка. Должно быть source = ['"D:\Warlock"', 'C:\Druid']
.
Редактировать: Также,
zip_commnad = "7z a -tzip {0} {1}" .format(target, ' '.join(source))
print(zip_command)
должно быть
zip_command = "7z a -tzip {0} {1}" .format(target, ' '.join(source))
print(zip_command)
т.е. правильно напишите команду и исправьте отступ. Кроме того, хотя определение путей резервного копирования таким образом, как вы, не является ошибкой, я бы согласился с комментарием abaumg о том, что использование необработанных строк было бы намного понятнее.
Комментарии:
1. Для лучшей читаемости я бы предложил
source = [r'D:Warlock', r'C:Druid']
2. @abaumg: Я думал, вы могли бы просто использовать косые черты, даже в Microsoft.
3. спасибо за помощь, ребята, я не могу поверить, что пропустил скобку, я всегда просматриваю свой код примерно 3 раза в поисках этих ошибок : (.
4. Извините, Блэр, первый пользователь сайта, который не понял, что это был вариант. Хотя сейчас я принял это. Еще раз спасибо. 🙂
Ответ №2:
В Python недопустимая синтаксическая ошибка часто означает, что имеется синтаксическая ошибка, на одну или несколько строк выше номера строки, о которой сообщается.
Используйте редактор, который выделяет круглые скобки, чтобы вы могли перемещать курсор вдоль строки и видеть, где отсутствуют или слишком много круглых скобок, фигурных скобок и т.д.
Кроме того, вы, возможно, захотите взглянуть на операционную систему.путь к модулю и избавьтесь от C: и из ваших имен файлов. Можно сделать код Python переносимым между Linux и Windows. Имена дисков могут быть взяты из опций (sys.argv) или конфигурационного файла (ConfigParser), а может быть заменен одним /, а затем вы можете использовать os.path.normcase(), чтобы нормализовать его для текущей ОС.
Комментарии:
1. 1 для: «В Python недопустимая синтаксическая ошибка часто означает, что существует синтаксическая ошибка»