2009-07-07 51 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

这样做......感谢所有答复..那很快!进入第二个错误,这是一个错误的文件描述符错误..试图让我自己整理出来..再次感谢! – 2009-07-07 18:27:54

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