سؤال

أول برنامج نصي 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: not all arguments converted during string formatting

إذا كنت غير منتظم، فإن الخط المعلق يعمل ويجعل الأمر أكثر قليلا وأخطاء أيضا .. لكنني سأتعامل مع ذلك بمجرد الحصول على هذه الفواق الفرز .. شكرا لأي إدخال.

هل كانت مفيدة؟

المحلول

tuple الخاص بك هو مشاكس

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

لديك ثلاثة معلمات، ولكن اثنين فقط 2٪ s في السلسلة. ربما يعني أن تقول:

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

على الرغم من أن "WR" غير واضح، فربما تعني W + أو R +.

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

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

أنت تمر ثلاث حجج (تكوين ['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')

(لقد نقلت قوس الإغلاق.)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top