Domanda
In primo script python e sto ottenendo un errore che non riesco a spostarsi utilizzando un file di configurazione. La prima parte dello script prende input dell'utente e mette che in un database mysql senza problem..Then ottengo al lavoro filesystem e le cose vanno un po 'shaped..I pera può farlo funzionare senza utilizzare le opzioni di file di configurazione, ma mi piacerebbe tenerlo coerente e tirare da quel file:
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'errore che sto ottenendo è:
TypeError: not all arguments converted during string formatting
Se io commento dalla riga commentata funziona e lo rende un po 'più e gli errori come well..But mi occuperò che una volta che ottengo questo singhiozzo sorted..Thanks per ogni ingresso.
Soluzione
Il tupla è deformato
f = open("%s/%s" % (config['vsftp']['user_dir'], (vusername), 'wr'))
Dovrebbe essere
f = open("%s/%s" % (config['vsftp']['user_dir'], (vusername)), 'wr')
Altri suggerimenti
L'errore è qui:
open("%s/%s" % (config['vsftp']['user_dir'], (vusername), 'wr'))
Hai tre parametri, ma solo due% s nella stringa. Probabilmente abbia voluto dire:
open("%s/%s" % (config['vsftp']['user_dir'], vusername), 'wr')
Anche se 'WR' non è chiaro, probabilmente dire w + o + r.
f = open("%s/%s" % (config['vsftp']['user_dir'], (vusername), 'wr'))
Si passa tre argomenti (config [ 'vsftp'] [ 'user_dir'], (vusername), 'wr') per una stringa di formato in attesa di due: "% s /% s". Quindi, l'errore che si sta dicendo che c'è un argomento per la stringa di formato che non è in uso.
Penso che tu abbia una parentesi sbagliata, la linea dovrebbe essere:
f = open("%s/%s" % (config['vsftp']['user_dir'], (vusername)), 'wr')
Sembra che questa linea dovrebbe essere:
f = open("%s/%s" % (config['vsftp']['user_dir'], vusername), 'wr')
(Ho spostato la parentesi di chiusura sopra.)