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.
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 +.
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.)