【问题标题】:Does Python-import import lists? [duplicate]Python-import 是否导入列表? [复制]
【发布时间】: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')

ma​​in_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


【解决方案1】:

您应该像下面的代码一样更改您的代码。

Paths.py

import os


def Listfilesindirectory():
    os.chdir(input('Working Directory: '))

    pathlist = os.listdir()

    for i in range(len(pathlist)):
        print(pathlist[i] + '\n')

    return pathlist

main_hash.py:

import paths

pathlist = paths.Listfilesindirectory()

hashlist = []

for n in range(len(pathlist)):
    hashlist[n] = defs.hash_file(pathlist[n])

print(hashlist)

【讨论】:

  • 非常感谢!现在可以了!还可以解释一下为什么我们这样做:pathlist = paths.Listfilesindirectory() ?? Listfilesindirectory() 只是一个定义,为什么我们把它放在路径列表中?
猜你喜欢
  • 1970-01-01
  • 2015-06-20
  • 2016-05-19
  • 1970-01-01
  • 2021-04-05
  • 2017-07-24
  • 2014-04-19
  • 2013-05-30
  • 2022-01-03
相关资源
最近更新 更多