Я пытаюсь запустить модуль 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'
Являются ли пути, в которых комментарииExpression принимают абсолютные пути? – praveen
Они - полные имена путей, да. –
Итак, ваш комментарий заставил меня задуматься, и я изменил следующую строку: «if os.path.exists (CommentsExpression) == True:« to if »os.path.exists (os.path.abspath (CommentsExpression)) = = True ', и пока это работает! –