如何执行python文件中的所有代码,以便在当前代码中使用def?我有大约100个脚本都是像下面的脚本写的。在
举个简单的例子,我有一个python文件,名为:
D:/蓝牙_测试.py在
他的代码如下:
def bt_test():
test = 2;
test += addFive(test)
return(test)
def addFive(test):
return(test+5)
现在,我想从一个全新的文件运行bt_test()
我试过这样做:
^{pr2}$但这行不通。在
我也试过这样做:
sys.path.append('D:/')
def openPyFile(script):
name = script.split('/')[-1].split('.')[0]
command = 'from ' + name + ' import *'
exec command
openPyFile('D:/bt_test.py')
bt_test()
有人知道为什么这不起作用吗?在
下面是一个quicktime视频的链接,它将有助于解释发生了什么。 https://dl.dropbox.com/u/1612489/pythonHelp.mp4
您应该将这些文件放在Python路径的某个地方,然后导入它们。这就是
import
语句的作用。顺便说一句:与主程序相同的目录位于Python路径上,这可能是放置它们的好地方。在除了Ned的回答之外,
__import__()
如果您不希望文件名被硬编码,那么__import__()
可能会很有用。在^{}
根据视频更新。在
我无法接触玛雅,但我可以试着推测。在
cmds.button(l='print', c='bt_press()')
是问题似乎潜伏的地方。bt_press()
作为一个字符串对象传递,无论解释器使用什么方法来解析该标识符,都不会在正确的命名空间中查找。在1)尝试将
bt_press()
与前面的模块一起传递:cmds.button(l='print', c='bt_test.bt_press()')
2)看看是否可以将
c
直接绑定到函数对象:cmds.button(l='print', c=bt_press)
祝你好运。在
execfile
不起作用的原因是bt_test
中的函数受openPyFile
函数范围的限制。一个简单的测试是尝试从openPyFile
内部运行bt_test()
。因为openPyFile除了execfile
之外没有其他功能,所以您可以将其完全删除,或者将其别名为execfile
注意,将文件放在python路径中并导入它绝对是您的最佳选择——我在这里发布这个答案是希望指出为什么您没有看到您想要看到的内容。在
相关问题 更多 >
编程相关推荐