2015-02-09 3 views
-2

У меня есть следующий код, который бросает ошибку: ValueError: Substring Not Found.Значение ошибки: подстрока не найдена с пути сценария запуска

import os, sys 
myCwd = os.path.abspath(__file__) 
svtestcases = os.path.normpath('Tests/SVTestCases') 
tcPath = myCwd[:myCwd.index(svtestcases) + len(svtestcases)] 
sys.path.insert(0, tcPath) 

Ошибка возникает из четвертой линии myCwd.index(svtestcases) части.

Путь сценария питона: "C:\Netra_Step_2015\Tests\SVTestcases\TC-Regression"

Что может быть проблема? Также почему есть ':' до myCwd.index? Может ли кто-нибудь объяснить, пожалуйста?

+0

Вы пробовали печатать как 'myCwd', так и' svtestcases'? –

+0

, потому что он не получит никакого целочисленного значения или не будет индекса. Срезание списка используется здесь 'listname [start: end]'. Здесь начало ничего, поэтому он печатает форму начала до конца индекса. –

+0

Вам необходимо запустить файл из того же каталога, где находится каталог 'Tests'. Итак, скопируйте файл python в каталог 'C: \ Netra_Step_2015'. –

ответ

0

Похоже, что ваши «myCwd» и «svtestcases» не имеют ничего общего, и когда вы пытаетесь найти индекс подстроки «svtestcases», это не совпадает с вашим myCwd.

Для например:

>>> a = '/Test/test1/test2/test3' 
>>> a.index('/Test') 
0 
>>> a.index('test2') 
12 
>>> 
>>> a.index('abc') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: substring not found 
>>> 

Хотя комментарий уже упоминает об этом. я просто добавил немного кода, чтобы сделать его более понятным. Он также рассказывает вам о части двоеточия. Подробнее о нарезке, и вы найдете его.

+0

kingsdeb, спасибо за пример. Проблема была решена путем изменения SVTestCases на «SVTestcases», потому что это был фактический путь. Но толстая кишка все еще не ясна. – user3565150

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