2014-10-01 3 views
0

У меня проблема с файлом, и я хотел бы получить от вас ответы.Проблемы, связанные с вводом файла

Я кодирую приложение Neo4J, используя py2neo. Я хочу прочитать файл и использовать этот файл для создания узлов и связей.

Проблема в том, что ввод файла с использованием кода ниже дает строки в виде строки.

file = "../create_db" 
dbFile=open(file,'r') 

И что мне нужно, вместо того, чтобы возвращать его в виде строки, чтобы получить его необработанным.
На данный момент проблема в том, что я хочу:

graph_db.create(node({'Id':'1', 'Description':'Computer'})) 

Но я получаю:

graph_db.create("node({'Id':'1', 'Description':'Computer'})") 

Есть ли способ, чтобы получить входной файл сырым? Может быть, библиотека, которая возвращает ее обратно?

Спасибо заранее, Jiar

+0

Вы имеете в виду, что файл содержит инструкции кода (или частично инструкции)? Возможно, посмотрите на функцию 'eval' ... – isedev

+0

Большое спасибо, это сработало. Добавьте ответ, чтобы я мог дать вам несколько кредитов. – Jiar

ответ

0

Это, кажется, ваш входной файл содержит операторы коды (или частичные заявления кода).

Вы можете выполнить инструкции, используя встроенную функцию eval и передать результаты этого функции graph_db.create.

Однако вы должны знать, что это позволяет выполнять произвольный код (т. Е. Входной файл становится частью исполняемого скрипта) и должен рассматриваться как часть кода (т. Е. Не использовать ненадежный входной файл).

0

Вы также можете проверить модуль ast. Хотя я не знаю, если это будет работать в вашем случае (курсив мой):

ast.literal_eval (node_or_string)

Безопасно оценить узел экспрессии или Unicode или Latin-1 строка в кодировке , содержащий выражение Python. Представленная строка или узел могут состоять только из следующих литеральных структур Python: строк, номеров, кортежей, списков, dicts, booleans и None.

Это может использоваться для безопасной оценки строк, содержащих выражения Python , из ненадежных источников без необходимости самостоятельно анализировать значения.

Так может быть, если у вас есть некоторый контроль над файлом использовать только dict часть ...

Использование eval может быть dangerous. Также проверьте это question and its answers.

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