Pregunta

En primer script en Python y estoy recibiendo un error me parece que no puede moverse por el uso de un archivo de configuración. La primera parte de la secuencia de comandos toma la entrada del usuario y pone eso en una base de datos MySQL sin problem..Then llego a la labor del sistema de archivos y las cosas van un poco de pera shaped..I puede conseguir que funcione sin necesidad de utilizar las opciones del archivo de configuración, pero me gustaría que fuese compatible y tire de ese archivo:

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

El error que estoy recibiendo es:

TypeError: not all arguments converted during string formatting

Si yo elimine la línea comentado funciona y hace que sea un poco más allá y los errores hacia fuera como well..But voy a tratar con que una vez que consiga esta hipo sorted..Thanks ninguna información.

¿Fue útil?

Solución

Su tupla está deformada

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

En caso de ser

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

Otros consejos

El error está aquí:

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

Existen tres parámetros, pero sólo dos% s en la cadena. Probablemente quería decir:

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

A pesar de que 'WR' está claro, es probable que decir w + o + r.

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

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

Está pasando tres argumentos (config [ 'vsftp'] [ 'user_dir'], (vusername), 'WR') a una cadena de formato esperando dos: "% s /% s". Así que el error está diciendo que hay un argumento a la cadena de formato que no está siendo utilizado.

Creo que tienes un paréntesis mal, la línea debe ser:

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

Parece que esta línea debe ser:

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

(moví el paréntesis de cierre de nuevo.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top