2015-04-13 4 views
-1

У меня есть файл конфигурации для моей программы 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. 

Я не знаю, почему это происходит .. Когда я запускаю программу без конфигурационного файла он выполняет штраф ... недавно полностью Может кто-то пожалуйста, помогите ..

Уважения, Namita.

+1

Как вы назначаете 'a' в своем коде? – RvdK

+0

Sry! Я забыл упомянуть об этом .. Я добавил его и обновил свой вопрос .. Пожалуйста, посмотрите .. – Goldengirl

+3

Это не может быть ваш код. Там ничего не называется 'ConfidParser', вы не можете назначить' A', а затем использовать его как 'a', и вы не можете отступать вещи в случайном порядке и ожидать, что они будут работать. Пожалуйста, покажите нам [минимальный, полный, проверяемый пример] (http://stackoverflow.com/help/mcve), а не просто что-то неопределенное, как ваш код, который может содержать или даже не содержать ошибку, в которой вам нужна помощь. – abarnert

ответ

0

Ваша ошибка в синтаксисе файла .ini.

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

Вы ожидаете, что переменная a следует рассматривать как кортеж, в то время как на самом деле значение строка, содержащая "('i2cset', '-y', '0', '0x20', '0x14', '0x01')".

+0

Спасибо за этот ответ .. Тогда, если не так, как я могу получить доступ к этому значению a из моего файла конфигурации? – Goldengirl

+0

У вас есть варианты. Один из способов - поместить в свой файл конфигурации 'a = i2cset -y 0 0x20 0x14 0x01' и использовать в вашем коде' subprocess.call (a, shell = True) '. –

+0

Большое вам спасибо. Теперь это похоже на работу. Ошибка была, как вы сказали, я пытался получить доступ к строке как переменной .. Спасибо :) – Goldengirl

Смежные вопросы