【问题标题】:Config file error [closed]配置文件错误[关闭]
【发布时间】:2015-04-13 07:27:04
【问题描述】:

我为我的 python 程序准备了一个配置文件。配置文件包含我的变量,它使用了“i2cset”模块。它如下: 这是我的配置文件'try.ini'

 [new]
  a = ('i2cset', '-y', '0', '0x20', '0x14', '0x01')

我从我的主要代码中读取如下:

from ConfigParser import SafeConfigParser
  parser=SafeConfigParser()
  parser.read('try.ini')

  def set21(tog=[0]):
      tog[0]= not tog[0]
      if tog[0]:
          set0.config(text='p21_1')
          A=parser.get('new', 'a')
          subprocess.call(''.join(A), shell=True)
      else:
          set0.config(txt='p21_0')

但是每次我执行主程序时,我都会收到一条错误消息:

/bin/sh: 1: 'i2cset ': not found.

我不知道为什么会发生这种情况..当我在没有配置文件的情况下运行程序时,它执行得很好... 有人可以帮忙吗..

亲切的问候, 纳米塔。

【问题讨论】:

  • 如何在代码中分配“a”?
  • 对不起!我忘了提..我已经添加并更新了我的问题..请看一下..
  • 那不可能是你的代码。没有什么叫做ConfidParser,你不能分配给A,然后将它用作a,你不能随机缩进并期望它们起作用。请告诉我们minimal, complete, verifiable example,而不仅仅是像你的代码那样模糊的东西,可能包含也可能不包含你需要帮助的错误。
  • 作为旁注,您为什么要call(' '.join(a), shell=True) 而不是仅仅将其保留为列表(因此您无需担心空格或其他怪异现象,因此您不必需要外壳)并且只是在做call(a)?
  • 随机猜测#1:您的实际代码执行' '.join(…) 两次;第一个将元组连接成一个字符串,每个元素之间有一个空格,然后第二个将字符串连接成一个字符串,每个字符之间有一个空格。修正:不要那样做。

标签: python config configparser


【解决方案1】:

您的错误在于 .ini 文件的语法。

[new]
a = ('i2cset', '-y', '0', '0x20', '0x14', '0x01')

您希望变量a 被读取为一个元组,而它实际上是一个包含"('i2cset', '-y', '0', '0x20', '0x14', '0x01')" 的字符串值。

【讨论】:

  • 谢谢你的回复。如果不是这样,我怎么能从我的配置文件中访问这个值?
  • 你有选择。一种方法是将a=i2cset -y 0 0x20 0x14 0x01 放入您的配置文件并在您的代码中使用subprocess.call(a, shell=True)
  • 非常感谢.. 现在它似乎工作了.. 错误是正如你所说我试图将字符串作为变量访问.. 谢谢:)
  • 或者您可以使用ast.literal_eval 将字符串解析为元组。但这似乎没有充分的理由过于复杂......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 2015-01-14
  • 1970-01-01
相关资源
最近更新 更多