Question

premier script python et je reçois une erreur que je ne peux pas sembler obtenir autour de l'utilisation d'un fichier de configuration. La première partie du script prend l'entrée d'utilisateur et met cela dans une base de données MySQL sans problem..Then je reçois au travail du système de fichiers et les choses vont un shaped..I poire bits peut faire fonctionner sans utiliser les options de fichier de configuration, mais Je voudrais le garder cohérent et tirer de ce fichier:

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

L'erreur que je reçois est:

TypeError: not all arguments converted during string formatting

Si je décommenter la ligne commentée et il fonctionne en fait un peu plus loin et les erreurs dues comme well..But je vais répondre à cette fois que je reçois ce sorted..Thanks hoquet pour toute entrée.

Était-ce utile?

La solution

Votre tuple est difforme

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

doit être

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

Autres conseils

L'erreur est ici:

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

Vous disposez de trois paramètres, mais seulement deux% s dans la chaîne. Vous avez sans doute voulu dire:

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

Bien que 'wr' est pas clair, vous voulez dire probablement w + ou + r.

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

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

Vous passez trois arguments (config [ 'vsftp'] [ 'user_dir'], (vusername), 'wr') à une chaîne de format attendant deux: "% s /% s". Donc, l'erreur vous dit qu'il ya un argument à la chaîne de format qui n'est pas utilisé.

Je pense que vous avez une mauvaise parenthèse, votre ligne doit être:

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

On dirait que cette ligne devrait être:

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

(I déplacé la parenthèse fermante sur.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top