Python: как ввести часть кода Python, такую ​​как \ input в Tex? - PullRequest
0 голосов
/ 21 апреля 2010

Я хочу ввести код на Python, как \input{Sources/file.tex}. Как я могу сделать это на Python?

[добавлено]

Предположим, я хочу ввести данные: print("My data is here"+<input data here>).

Данные

1, 3, 5, 5, 6

Ответы [ 4 ]

4 голосов
/ 21 апреля 2010

Встроенная функция execfile выполняет то, что вы просите, например:

filename = "Sources/file.py"
execfile( filename )

Это выполнит код из Sources/file.py почти так, как если бы этот код был встроен в текущий файл, и, таким образом, очень похож на #include в C или \input в LaTeX.

Обратите внимание, что execfile также допускает два необязательных аргумента, позволяющих вам указывать глобальные и локальные подсказки, по которым должен выполняться код, но в большинстве случаев это необязательно. Подробнее см. pydoc execfile.

Есть случайные законные причины хотеть использовать execfile. Однако для структурирования больших программ на Python принято разделять код на модули, размещенные где-то в PYTHONPATH, и загружать их с помощью оператора import, а не выполнять их с помощью execfile. Преимущества import над execfile включают:

  • Импортируемым функциям присваивается имя модуля, например, module.myfunction вместо просто myfunction.
  • Ваш код не должен жестко кодировать, где в файловой системе находится файл.
2 голосов
/ 21 апреля 2010

Вы не можете сделать это в Python.Вы можете import объекты из других модулей.

otherfile.py:

def print_hello():
    print "Hello World!"

main.py

import otherfile
otherfile.print_hello() # prints Hello World!

См. учебник по питону

0 голосов
/ 04 января 2011

Мой вопрос был явно слишком широким, поскольку намекало разнообразие ответов - ни один из них полностью не затронул вопрос. Jchl предназначается для сценария, в котором вы получаете Python-код для выполнения. THC4k обращается к ситуации, когда вы хотите использовать внешние объекты из модулей. Как сказал Ксавье Хо, ответ muckabout - плохая практика, почему на земле он использует import, тогда как он также может использовать exec, принцип наименьших привилегий для собак. Одна вещь все еще отсутствует, вероятно, из-за конфликта между термином python-code в заголовке и добавлением data, содержащего целые числа - трудно утверждать, что данные python-code, но код объясняет, как input данные, evaluations и executable код.

#!/usr/bin/python
#
# Description: it works like the input -thing in Tex,
# you can fetch outside executable code, data or anything you like.
# Sorry I don't know precisely how input(things) works, maybe misusing terms
# or exaggerating.
#
# The reason why I wanted input -style thing is because I wanted to use more
# Python to write my lab-reports. Now, I don't need to mess data with 
# executions and evalutions and data can be in clean files.


#TRIAL 1: Execution and Evaluation not from a file

executeMe="print('hello'); a = 'If you see me, it works'";

exec( executeMe )
print(a);

#TRIAL 2: printing file content
#
# and now with files
#
# $ cat IwillPrint007fromFile
# 007

f = open('./IwillPrint007fromFile', 'r');
msg = f.read()

print("If 007 == " + msg + " it works!");


# TRIAL 3: Evaluation from a file
#
# $cat IwillEvaluateSthing.py
# #!/usr/bin/python
# #
# # Description: 
# 
# 
# evaluateMe = "If you see me again, you are breaking the rules of Sky."

f = open('./IwillEvaluateSthing.py', 'r');
exec(f.read());
print(evaluateMe);
0 голосов
/ 21 апреля 2010

Скажем, у вас есть код в "my_file.py". Любая строка, отсутствующая в методе, будет выполнена, когда вы выполните:

import my_file

Например, если my_file.py содержит следующий код:

print "hello"

Затем в интерпретаторе вы набираете:

import my_file

Вы увидите "привет".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...