Python无法导入,导入错误:没有名为
我是python新手,我正在尝试将一些值从一个文件导入到另一个文件。 我希望我的“程序”从main_file.py转到其他文件,如calculator.py,然后返回main_file.py 为此,我决定创建一个先前运行过的变量,其值为's'。 当计算器被激活时,通过命令,它会选择这个变量 (然后将其返回给main_file.py,它将检查变量的值,然后跳过它自己的脚本的一些行,如果以前运行的变量的值为's'): …然后calc.py将从main_file.py中选择变量…:Python无法导入,导入错误:没有名为,python,import,cmd,Python,Import,Cmd,我是python新手,我正在尝试将一些值从一个文件导入到另一个文件。 我希望我的“程序”从main_file.py转到其他文件,如calculator.py,然后返回main_file.py 为此,我决定创建一个先前运行过的变量,其值为's'。 当计算器被激活时,通过命令,它会选择这个变量 (然后将其返回给main_file.py,它将检查变量的值,然后跳过它自己的脚本的一些行,如果以前运行的变量的值为's'): …然后calc.py将从main_file.py中选择变量…: import pr
import previously_runned from main_file
……返回:
File "C:\Users\Kevin\Prog\Calc.py", line 72, in <module>
import main_file
ImportError: No module named main_file
文件“C:\Users\Kevin\Prog\Calc.py”,第72行,在
导入主文件
ImportError:没有名为main\u文件的模块
谢谢你的帮助 当您执行
os.system()
时,它是一个完全独立的Python进程;它不会与实际运行os.system()
调用的Python实例共享任何变量。也就是说,如果您更改以前从calc.py运行的内容,它将不会反映在主文件中
您真正想要在这里使用的是函数;功能是比模块更好的控制流单元。听起来你可能还没有用Python做到这一点,所以我认为现在你应该坐以待毙——你所尝试的是一个良好的迹象,表明你做得很好,但在你习惯于定义和调用函数之前,这是没有意义的
坚持下去!Python非常棒
我希望我的“程序”从main_file.py转到其他文件,如
calculator.py,然后返回主_file.py
下面是一个简单的示例,其中执行从main.py开始;它从calc.py调用函数。函数返回后,执行将移回main.py的下一行
james@brindle:tmp$cat main.py
import calc
value1 = "10"
value2 = "20"
def main():
sum = calc.add(value1, value2)
print sum
if __name__ == "__main__":
main()
james@brindle:tmp$cat calc.py
def add(value_a, value_b):
print "In ur calc.py, doin ur sumz"
return value_a + value_b
james@brindle:tmp$python main.py
In ur calc.py, doin ur sumz
1020
请注意,这并没有使
main.py
中定义的内容可以从calc.py
访问-它做了相反的操作,并使calc.py
中的内容可以从main.py
中访问,正如AdamKG已经指出的那样,您需要函数。您有两个选项,要么使calc.py包含函数并导入该函数,要么将函数包含在主文件中。例如:
main.py
def calc(var1,var2,var3):
ans1 = var1 + var2
...
return(ans1,ans2,ans3)
var1 = ...
var2 = ...
var3 = ...
ans1,ans2,ans3 = calc(var1,var2,var3)
也许我能推荐的最好的python教程/参考是官方的:
docs.python.org/tutorial/
我希望我的“程序”从main_file.py转到其他文件,如calculator.py,然后返回main_file.py
因此,在main_file.py
中,您导入计算器,然后调用在calculator.py
中定义的函数,并将它所需的信息(来自main_file
的变量)作为参数传递给函数。os.system()执行作为子shell中的参数提供的命令。这意味着它生成一个新进程来执行命令,并且不共享调用进程的变量。您想要实现的是更好地使用类和函数
假设calc.py和main.py位于同一文件夹中,下面是一个简单的函数示例。请注意,这个例子只是为了解释,它使用了一些糟糕的编程实践,比如可以避免的全局变量
calc.py
main.py
您可以看到我们如何从main.py
调用calc.py
中的代码,而不产生任何新进程
下面是另一个使用类的示例。这是一种更干净、结构更好的方法,并且不使用全局变量之类的坏做法
calc_class.py
main_class.py
用法-d:\vikesh\personal\stuff>python main.py
九, d:\vikesh\personal\stuff>python main\u class.py
42
我的名字是My Calc哇,是的,函数(在主_文件中实现)更出色!
main.py
def calc(var1,var2,var3):
ans1 = var1 + var2
...
return(ans1,ans2,ans3)
var1 = ...
var2 = ...
var3 = ...
ans1,ans2,ans3 = calc(var1,var2,var3)
var1 = None
var2 = None
def set_variables(a,b):
global var1, var2
var1 = a
var2 = b
def calculate(s):
if s=='add':
print var1 + var2
elif s=='sub':
print var1 - var2
elif s=='div':
print var1/var2
elif s=='mul':
print var1*var2
else:
print "Invalid Operation"
from calc import *
set_variables(4,5)
calculate('add')
raw_input()
class Calculator:
def __init__(self,s):
#init code
self.s = s
def __str__(self):
return self.s
def add(self,a,b):
return (a + b)
def sub(self,a,b):
return (a-b)
def div(self,a,b):
return (a/b)
def mul(self,a,b):
return (a*b)
from calc_class import *
calc = Calculator('My Calc')
print calc.add(40,2)
print "My name is %s "%calc