假设您在python交互式shell中,然后键入前两行:
>>> import math #just to have a statement as well as an expression
>>> [x * 2 for x in [1, 2, 3, 4]]
[2, 4, 6, 8]
>>>
您可以看到结果是在不使用打印功能的情况下打印的。
现在,如果我们将执行的代码保存在名为tempcode.py
的文件中:
import math #just to have a statement as well as an expression
[x * 2 for x in [1, 2, 3, 4]]
问题是,是否有可能在python shell中加载/执行导致打印结果的文件?
更新:我真正想做的是执行保存在文件中的代码行,并使 python shell 像对待它们一样在其中键入代码。 换句话说,,我需要在文件中写几行代码,而不是在repl中手动输入,让它们都得到相等的输出。 Node.js repl具有此功能:.load
更多澄清性更新:预期行为
>>> aBuiltinThing('tempcode.py')
[2, 4, 6, 8]
>>>
**问题** :python是否具有该aBuiltinThing
?
答案 0 :(得分:0)
感谢您的澄清,我已经根据您的更新对答案进行了编辑。另外我不确定您需要打印什么,因为您的python文件可以有n个。变量和方法。最好的方法是执行python文件并将文件的执行对象保存在字典中,该字典可按以下方式使用:-
test.py :-
import pandas as pd
a = [x * 2 for x in [1, 2, 3, 4]]
def return_out():
return a
实际的python脚本:-
exec_dict = {}
exec(open('C:\\Temp\\test.py').read(), exec_dict)
现在要打印方法return_out的值,可以使用:-
exec_dict['return_out']()
Out[41]: [2, 4, 6, 8]
或获取变量a:-
exec_dict['a']
Out[40]: [2, 4, 6, 8]
这将同时适用于python2和python3
答案 1 :(得分:0)
您可以在python shell中运行python文件。像这样
>>> execfile('abc.py')
[2, 4, 6, 8]
abc.py
会是这样。
print [x * 2 for x in [1, 2, 3, 4]]
如果从外壳程序执行时在print
中删除了abc.py
,它将不会打印任何内容。
如果abc.py
这样。
[x * 2 for x in [1, 2, 3, 4]]
print 'test'
shell中的结果将是这样。
>>> execfile('abc.py')
test
NB:execfile
在python2
中。
答案 2 :(得分:0)
如果您愿意在不使用print语句的情况下牺牲stdout来输出,我相信您可以使用
python -i tempcode.py
您可以在执行时使用 -i 命令行参数,这应该可以执行您的代码,最后可以让您控制,而不必重写REPL中的整个文件。您将能够照常访问文件的所有变量和其他内容。
您可以在python文档here
中找到更多信息