Строковые переменные в функции Python? - PullRequest
0 голосов
/ 09 февраля 2011

Я пишу скрипт на python, но не могу использовать несколько строк в таких случаях, как проверка каталога, создание файла и т. Д.,

Я использую это, чтобы получить пользовательский ввод: drive = raw_input('enter drive name to make backup ')

if not os.path.exists('/media/%s/backup' %drive):
    os.mkdir('/media/%s/backup' %drive)

Приведенный выше код работает, но приведенный ниже tarfile выдает ошибку ........

./backup4.py 
enter drive name to make backup PENDRIVE
Traceback (most recent call last):
  File "./backup4.py", line 17, in <module>
    tarFile = tarfile.open("/media/%s/backup/%s.tar.bz2" %drive %dateVar, 'w:bz2')
TypeError: not enough arguments for format string


tarFile = tarfile.open("/media/%s/backup/%s.tar.bz2" %drive %dateVar, 'w:bz2')

Какие изменения я должен внести в вышеупомянутый tarfile.open ??

Ответы [ 2 ]

6 голосов
/ 09 февраля 2011

Ваше форматирование строки неверно. Вам нужно передать кортеж переменных, равный количеству подстановок в вашей строке.

tarFile = tarfile.open("/media/%s/backup/%s.tar.bz2" % (drive, dateVar), 'w:bz2')
2 голосов
/ 09 февраля 2011

Я бы предложил сохранить форматирование вне tarfile.open (), как показано в следующем фрагменте кода:

file_name = "/media/{0}/backup/{1}.tar.bz2".format(drive, dateVar)
tarFile = tarfile.open(file_name, 'w:bz2')

Таким образом, вы можете повторно использовать ваше имя_файла с правильным форматированием вчасти вашего скрипта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...