Есть еще довольно уродливое решение: использовать встроенную функцию exec
.
Прежде всего, вы читаете код из своего файла:
with open("auxiliary.py", 'r') as f:
content = f.readlines()
Затем вы отфильтровываете ненужные строки, так что content
- это строка, содержащая ваш код Python, то есть:
# The following evaluates to True
content == 'fact = 1\nif n < 0:\n print("Sorry, factorial does not exist for negative numbers")\nelif n == 0:\n print("The factorial of 0 is 1")\nelse:\n for i in range(1,n + 1):\n fact = fact*i\n print "%d!=%d"%(n,fact)'
Затем вы можете просто вызвать функцию exec
, который будет действовать так, как если бы строки были включены вместо вызова функции:
exec content # Or exec(content), both seems to work in Python 2.7
См. здесь для дальнейшего объяснения.
Обратите внимание, что вы будете иметь доступ к fact
и любым другим переменным, как если бы вы записали эти строки в свой основной файл.
Имейте в виду, что это может стать опасным: если вы формально не определите, какие строки выполнять ( например, добавив комментарий в качестве идентификатора или если вспомогательный файл никогда не изменится), вы можете в конечном итоге запустить некоторый код из вспомогательного файла, который вам не нужен.