2014-01-08 2 views
1

Я пытаюсь запустить модуль python, который ищет таблицу, и извлекает данные из некоторых из cels в этой таблице (используя переменную «LayerExpression»). В некоторых случаях эта ячейка содержит имя пути к другому файлу python (например, ячейка таблицы может содержать в себе следующее имя пути: «C: \ Users \ me \ Documents \ Working \ PyFiles \ Example.py»). Моя программа python присваивает каждому значению ячейки переменной «CommentExpression», а затем проверяет переменную, чтобы увидеть, действительно ли она ссылается на имя пути к существующему файлу (используя os.path.exists()). Если это так, то моя программа будет импортировать этот другой файл python в качестве модуля и извлечь из него определенные переменные - в этом примере переменная «выражение».Проблема с Python os.path.exists с переменными

Моя проблема заключается в том, что, когда я вытаскиваю имя пути из таблицы, назначаю ее переменной «Комментарии» и запускаю ее через os.path.exists(), она продолжает отображаться как ложная - даже если путь к файлу действительно существует. Я попытался использовать r '[имя пути]', но не повезло в качестве переменной. Ниже приведен пример моего кода.

import arcpy, os, re, array, sys, glob 
from arcpy import env 

CommentsExpression = '' 
LayerExpression = '"Database - Fish Species"' 
rows = arcpy.SearchCursor(r'C:\Users\me\Documents\Working\PyFiles\Master_Table.py') 
for row in rows: 
LayerField = row.getValue("Layer") 
if LayerField == LayerExpression: 
    CommentsExpression = CommentsExpression = row.getValue(str("Comments")) 
    print os.path.exists(CommentsExpression) 
    CommentsExpressionOutput = os.path.basename(CommentsExpression) 
    CommentsExpressionOutput = CommentsExpressionOutput.split('.') 
    CommentsExpressionOutput = str(CommentsExpressionOutput[0]) 
    if os.path.exists(CommentsExpression) == True: 
     print 'True' 
     pyFile = __import__(CommentsExpressionOutput) 
     print pyFile.codeblock 
    else: 
     print 'False' 
+1

Являются ли пути, в которых комментарииExpression принимают абсолютные пути? – praveen

+0

Они - полные имена путей, да. –

+0

Итак, ваш комментарий заставил меня задуматься, и я изменил следующую строку: «if os.path.exists (CommentsExpression) == True:« to if »os.path.exists (os.path.abspath (CommentsExpression)) = = True ', и пока это работает! –

ответ

0

Благодаря praveen за то, что помог мне в этом. Если бы я изменил следующую строку из

if os.path.exists(CommentsExpression) == True:' 

вместо этого

if os.path.exists(os.path.abspath(CommentsExpression)) == True 

, кажется, работает.

+0

Надеюсь, вы не хотели вставлять все выражение в одинарные кавычки. – cpburnz

+0

Нет, я этого не делал. Ты прав. Я сам это заметил. –

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