2009-07-07 1 views
0

Первый скрипт python, и я получаю сообщение об ошибке. Кажется, я не могу обойтись с помощью файла конфигурации. Первая часть скрипта принимает пользовательский ввод и помещает его в базу данных mysql без проблем. Затем я добираюсь до работы с файловой системой, и все происходит немного грушевидно. Я могу заставить ее работать, не используя параметры файла конфигурации, но Я хотел бы сохранить его последователен и вытащить из этого файла:Ошибка 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() 

ошибки я получаю это:

TypeError: not all arguments converted during string formatting 

Если я раскомментировать комментируемую строку она работает и делает его немного дальше и ошибки также ... Но я буду иметь дело с этим, как только я получу эту икоту, отсортированную ... Спасибо за любой вклад.

ответ

3

Ваш кортеж неправильной формы

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

Должно быть

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

Это сделало это ... Спасибо всем, что ответили .. Это было быстро! Входите во вторую ошибку, которая является плохой ошибкой дескриптора файла. Попробуй, чтобы тот разобрался на моем собственном ... Спасибо снова! –

2

Ошибка здесь:

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

У вас есть три параметра, но только два% s в строке. Вы, вероятно, хотели бы сказать:

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

Хотя «wr» неясно, вы, вероятно, имеете в виду w + или r +.

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

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

Вы передаете три аргумента (конфигурации [ 'vsftp'] [ 'user_dir'], (vusername), 'wr') в строку формата, ожидающую два: «% s /% s». Таким образом, ошибка говорит вам, что есть аргумент строки формата, которая не используется.

0

Я думаю, что у вас есть неправильный скобку, ваша линия должна быть:

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

Похоже, эта линия должна быть: (. Я переехал закрывающую скобку над)

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