2009-07-07 7 views
0

Premier script python et j'obtiens une erreur que je n'arrive pas à contourner en utilisant un fichier de configuration. La première partie du script prend l'entrée de l'utilisateur et met cela dans une base de données mysql sans problème .. Puis j'arrive au travail du système de fichiers et les choses vont un peu en forme de poire .. Je peux le faire fonctionner sans utiliser les options du fichier de configuration Je voudrais le garder cohérent et tirer de ce fichier:Erreur Python

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écommentez la ligne a commenté cela fonctionne et fait un peu plus loin et les erreurs aussi bien .. Mais je vais faire face à cela une fois que j'ai ce hoquet trié .. Merci pour toute contribution.

Répondre

3

Votre tuple est difforme

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

devrait être

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

Cela l'a fait ... Merci à tout ce qui a répondu ... C'était rapide !! Ran dans la deuxième erreur qui est une mauvaise erreur de descripteur de fichier .. Essayant d'obtenir celui-là triés par moi-même .. Merci encore! –

2

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 probablement voulu dire:

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

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

0
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 attend deux: "% s /% s". L'erreur vous indique donc qu'il existe un argument à la chaîne de format qui n'est pas utilisée.

0

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

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

On dirait que cette ligne devrait être: (. Je me suis déplacé la parenthèse fermante plus)

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