Pergunta

script python Primeira e eu estou recebendo um erro eu não consigo obter em torno de usar um arquivo de configuração. A primeira parte do script leva a entrada do usuário e coloca isso em um banco de dados mysql sem problem..Then eu chegar ao trabalho sistema de arquivos e as coisas vão um pouco de pêra shaped..I pode obtê-lo para o trabalho sem usar as opções do arquivo de configuração, mas Eu gostaria de mantê-lo consistente e puxar a partir desse arquivo:

  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()

O erro que eu estou recebendo é:

TypeError: not all arguments converted during string formatting

Se eu remover o comentário da linha comentada ele funciona e faz com que seja um pouco mais e erros como well..But eu vou lidar com isso quando eu chegar este sorted..Thanks soluço por qualquer entrada.

Foi útil?

Solução

Seu tupla é misshaped

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

Deve ser

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

Outras dicas

O erro está aqui:

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

Você tem três parâmetros, mas apenas dois% s na cadeia. Você provavelmente quis dizer:

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

Apesar de 'wr' não é clara, você provavelmente quer dizer w + ou r +.

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

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

Você está passando três argumentos (config [ 'Vsftp'] [ 'user_dir'], (vusername), 'wr') para uma seqüência de formato esperando dois: "% s /% s". Assim, o erro está lhe dizendo que há um argumento para a cadeia de formato que não está sendo usado.

Eu acho que você tem um parêntese errado, sua linha deve ser:

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

Parece que essa linha deve ser:

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

(I mudou-se o parêntese de fechamento mais.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top