如何执行python文件中的所有代码?

2024-09-29 23:18:15 发布

您现在位置:Python中文网/ 问答频道 /正文

如何执行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


Tags: 文件代码namepytest脚本returndef
3条回答

您应该将这些文件放在Python路径的某个地方,然后导入它们。这就是import语句的作用。顺便说一句:与主程序相同的目录位于Python路径上,这可能是放置它们的好地方。在

# Find and execute bt_test.py, and make a module object of it.
import bt_test

# Use the bt_test function in the bt_test module.
bt_test.bt_test()

除了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

openPyFile=execfile

注意,将文件放在python路径中并导入它绝对是您的最佳选择——我在这里发布这个答案是希望指出为什么您没有看到您想要看到的内容。在

相关问题 更多 >

    热门问题