【发布时间】:2022-01-05 19:07:10
【问题描述】:
您好,我在同一目录中有 2 个 Python 文件:
paths.py:
import os
def Listfilesindirectory():
os.chdir(input('Working Directory: '))
pathlist = os.listdir()
for i in range(len(pathlist)):
print(pathlist[i] + '\n')
main_hash.py:
import defs
import paths
paths.Listfilesindirectory()
hashlist = []
for n in range(len(pathlist)):
hashlist[n] = defs.hash_file(pathlist[n])
print(hashlist)
首先我在main_hash.py中导入paths.py文件;比在 main.py 中我执行(执行正确的术语吗??)我在 path.py 中定义的 Listfilesindirectory。直到这里都没问题,它可以完美地执行。比我想使用我在paths.py中启动的列表“pathlist”。但我得到以下错误代码:
Traceback (most recent call last):
File "/Users/kyilmaz/Documents/Python/main_hash.py", line 10, in <module>
for n in range(len(pathlist)):
NameError: name 'pathlist' is not defined
不应该在 main.py 中导入“路径列表”吗?我也试过:从路径导入路径列表。没用。
【问题讨论】:
-
这是范围的问题,而不是导入的问题。
pathlist的范围是Listfilesindirectory的本地范围。如果你想使用它,你的函数应该返回它。然后在调用时将返回的对象绑定到一个名称。 -
@buran 为什么以及如何将返回的对象绑定到名称?
-
这正是您在答案
Listfilesindirectory返回pathlist中所问的问题。然后当你称它为pathlist = paths.Listfilesindirectory()。请注意,pathlist有两个不同的名称。一种是函数内部的局部范围(并返回)。另一个在模块main_hash的全局范围内。它们是不同的。
标签: python import python-import