题
第一个Python脚本,我得到一个错误,我似乎无法避开使用配置文件。脚本的第一部分需要用户输入,并把该到mysql数据库没有problem..Then我得到的文件系统的工作和事情有点梨shaped..I可以得到它,而无需使用配置文件选项工作,但我想保持一致,并从该文件中提取:
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
如果我取消了注释行它的工作原理,并使其一点,并出现了错误的well..But我也有应对一旦我得到这个打嗝sorted..Thanks任何输入。
解决方案
您元组被有些变形
f = open("%s/%s" % (config['vsftp']['user_dir'], (vusername), 'wr'))
应
f = open("%s/%s" % (config['vsftp']['user_dir'], (vusername)), 'wr')
其他提示
在错误是在这里:
open("%s/%s" % (config['vsftp']['user_dir'], (vusername), 'wr'))
您有三个参数,但只有两个%S的的字符串中。你大概的意思是说:
open("%s/%s" % (config['vsftp']['user_dir'], vusername), 'wr')
虽然 'WR' 不清楚,你可能意味着W +或R +。
f = open("%s/%s" % (config['vsftp']['user_dir'], (vusername), 'wr'))
您正在传递三个参数(CONFIG [ 'VSFTP'] [ 'user_dir的'],(vusername), 'WR')的格式串期待二: “%s /%s” 时。因此错误是告诉你,有一种说法到未使用的格式字符串。
我觉得你有一个错误的括号,你行应为:
f = open("%s/%s" % (config['vsftp']['user_dir'], (vusername)), 'wr')
它看起来像这样行应该是:
f = open("%s/%s" % (config['vsftp']['user_dir'], vusername), 'wr')
(I移到右括号。)
不隶属于 StackOverflow