我试图使用一个名为start的函数在python中设置我的环境。该函数导入os。 运行该功能后,执行以下操作 os.listdir(simdir +"主&#34) 我收到一个错误,说明os未定义 代码
>>> def setup ():
import os.path
import shutil
simdir="e:\\"
maindir="c:\\backup\\bitcois\\test exit\\"
>>> setup()
>>> os.listdir(simdir+"main")
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
os.listdir(simdir+"main")
NameError: name 'os' is not defined
答案 0 :(得分:1)
import
语句的作用域。导入模块时,它们是为本地名称空间定义的。
导入语句分两步执行:(1)找到一个模块,并在必要时进行初始化; (2)在本地名称空间(发生import语句的作用域)中定义一个或多个名称。 [...]
因此,在您的情况下,os
包仅在函数setup
中定义。
答案 1 :(得分:0)
您收到此错误是因为您没有导入整个os
库而只导入os.path
模块。这样,os
库中的其他资源无法供您使用。
为了能够使用os.listdir
方法,您需要将其与os.path
一起导入,如下所示:
>>> def setup ():
import os.path, os.listdir
import shutil
simdir="e:\\"
maindir="c:\\backup\\bitcois\\test exit\\"
或导入完整的库:
>>> def setup ():
import os
import shutil
simdir="e:\\"
maindir="c:\\backup\\bitcois\\test exit\\"
您可以在这里阅读更多内容: https://docs.python.org/2/tutorial/modules.html
答案 2 :(得分:0)
尝试:
import os.path
import shutil
import glob
def setup ():
global simdir
simdir="e:\\"
maindir="c:\\backup\\bitcois\\test exit\\"
setup()
os.listdir(simdir+"main")
答案 3 :(得分:0)
您需要返回路径并在全局范围内分配返回的值。另外,也导入os
:
import os
def setup():
# retain existing code
return simdir, maindir
simdir, maindir = setup()
答案 4 :(得分:0)
当您在函数中导入操作系统或执行任何类型的命令时,该命令的效果仅在该函数本身运行时持续。你需要做的是
import os
...Do your function and other code
这样,您的导入将持续整个程序:)。