0

第一个 python 脚本,我收到一个错误,我似乎无法使用配置文件解决。脚本的第一部分接受用户输入并将其放入 mysql 数据库中没有问题..然后我开始文件系统工作,事情变得有点梨形..我可以在不使用配置文件选项的情况下让它工作但是我想保持一致并从该文件中提取:

  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:字符串格式化期间并非所有参数都转换了

如果我取消注释注释行,它会起作用并使它更进一步并且也会出错。但是一旦我对这个问题进行了排序,我就会处理这个问题。

4

5 回答 5

3

你的元组形状不正确

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

应该

f = open("%s/%s" % (config['vsftp']['user_dir'], (vusername)), 'wr')
于 2009-07-07T18:14:12.840 回答
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

于 2009-07-07T18:14:10.983 回答
0
f = open("%s/%s" % (config['vsftp']['user_dir'], (vusername), 'wr'))

您将三个参数 (config['vsftp']['user_dir'], (vusername), 'wr') 传递给一个格式字符串,需要两个参数:“%s/%s”。所以错误告诉你格式字符串有一个参数没有被使用。

于 2009-07-07T18:15:32.650 回答
0

我认为你有一个错误的括号,你的行应该是:

f = open("%s/%s" % (config['vsftp']['user_dir'], (vusername)), 'wr')
于 2009-07-07T18:16:12.523 回答
0

这条线看起来应该是:

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

(我把右括号移了过来。)

于 2009-07-07T18:19:17.180 回答