Вопрос

Первый скрипт Python, и я получаю ошибку, которую я не могу обойти, используя файл конфигурации.Первая часть сценария принимает пользовательский ввод и без проблем помещает его в базу данных MySQL. Затем я перехожу к работе файловой системы, и все идет немного грушевидно. Я могу заставить ее работать без использования параметров файла конфигурации, но Я хотел бы сохранить его согласованность и извлечь из этого файла:

  vshare = str(raw_input('Share the user needs access to: '))
  vrights = str(raw_input('Should this user be Read Only? (y/n): '))
  f = open("%s/%s" % (config['vsftp']['user_dir'], (vusername), 'wr'))
  #f = open("/etc/vsftpd_user_conf/%s" % (vusername) , 'wr' )
  f.write("local_root=%s/%s" % (config['vsftp']['local_root_dir'], vshare))
  if vrights.lower() in ['y', 'ye', 'yes']:
      buffer = []
      for line in f.readlines():
          if 'write_enable=' in line:
              buffer.append('write_enable=NO')
          else:
              buffer.append(line)
      f.writelines(buffer)
  f.close()

Ошибка, которую я получаю:

TypeError: not all arguments converted during string formatting

Если я раскомментирую закомментированную строку, она сработает, продвинется дальше и выдаст ошибки. Но я разберусь с этим, как только разберусь с этой проблемой. Спасибо за любой вклад.

Это было полезно?

Решение

Ваш кортеж имеет неправильную форму

f = open("%s/%s" % (config['vsftp']['user_dir'], (vusername), 'wr'))

Должно быть

f = open("%s/%s" % (config['vsftp']['user_dir'], (vusername)), 'wr')

Другие советы

Ошибка здесь:

open("%s/%s" % (config['vsftp']['user_dir'], (vusername), 'wr'))

У вас есть три параметра, но в строке только два %s.Вы, наверное, хотели сказать:

open("%s/%s" % (config['vsftp']['user_dir'], vusername), 'wr')

Хотя слово «wr» неясно, вы, вероятно, имеете в виду w+ или r+.

http://docs.python.org/library/functions.html#open

f = open("%s/%s" % (config['vsftp']['user_dir'], (vusername), 'wr'))

Вы передаете три аргумента (config['vsftp']['user_dir'], (vusername), 'wr') в строку формата, ожидающую два:"%SS".Таким образом, ошибка сообщает вам, что в строке формата есть аргумент, который не используется.

Я думаю, что у вас неправильная скобка, ваша строка должна быть такой:

f = open("%s/%s" % (config['vsftp']['user_dir'], (vusername)), 'wr')

Похоже, эта строка должна быть:

f = open("%s/%s" % (config['vsftp']['user_dir'], vusername), 'wr')

(Я передвинул закрывающую скобку.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top