【问题标题】:Why am I getting an error importing os.walk in python2.7为什么我在 python2.7 中导入 os.walk 时出错
【发布时间】:2020-05-20 07:37:44
【问题描述】:

我需要在 Linux 服务器上递归搜索目录/子目录以查找特定名称的目录并检索这些特定目录中的文件。我尝试了两种方法,一种是导入 os 并调用 os.walk,另一种是从 os 导入 walk。代码如下:

def getDeployedLibraries():
        serverConfig()
        path = 'somePath'
        deployments = cmo.getLibraries()
        print(divider)
        print("Library Deployments:" )
        print(divider)
        if deployments:
                deployedLibs = []
                stagedLibs = []
                archiveLibs = []
                for dep in deployments:
                        full_name = dep.getName()
                        path = dep.getAbsoluteSourcePath()
                        deployedLibs.append(path+full_name)
                for (dirpath, dirnames, files) in os.walk(path):
                        for name in dirnames:
                                if name != "shared-lib":
                                        dirnames.remove(name)
                        for file in files:
                                stagedLibs.append(file)
                for sLib in stagedLibs:
                        if sLib not in deployedLibs:
                                archiveLibs.append(sLib)
                f = open("filesToArchive.txt","w")
                f.write("\n".join(archiveLibs))
                f.close()
        else:
                deploymentsList.append("No deployments of this type installed.")
        domainConfig()
        return deploymentsList 

当只导入 os 并调用 os.walk 时,我收到 AttributeError: class 'org.python.modules.os' has no attribute 'walk' 的错误,当我从 os 导入 walk 并调用 os 时,我得到了错误'ImportError:无法导入名称步行'。

这个脚本确实连接到 WLST,所以我想我可能遇到了冲突,但没有找到任何表明这种情况的东西。

【问题讨论】:

  • 这看起来不像是 Python 错误。这是javarish。这是 Jython 吗?
  • @KlausD。据我了解,这是python。我对任何类型的 python 编码都不熟悉,但我一直使用的所有格式和语法看起来都是 python。我快速搜索了差异,这让我相信我只是在使用 python。
  • 我确实有一些 java 导入,但我尝试删除这些以及任何相关代码进行测试,但没有任何效果。
  • 如何运行代码?
  • 我有一个运行“java -Dweblogic.security.allowCryptoJDefaultPRNG=true -Dweblogic.security.allowCryptoJDefaultJCEVerification=true weblogic.WLST /apps/config/scripts/test/libComparison.py”的启动器该行的java部分将代码转换为jython?我承认我使用该行是因为其他人已将其用于他们的脚本。

标签: python linux python-2.x wlst


【解决方案1】:

函数应该从os.path导入:

from os.path import walk

【讨论】:

  • os.path.walkos.walk 是两个不同的函数。
  • WLST 使用 Python 2.2.1 而不是 2.7。 os.walk 可能不可用
  • 说真的!?从 2002 年开始!
  • 所以即使我安装的是 2.7,由于我也在运行 WLST,我只能使用 2.2.1 的功能?
  • 恐怕是的。 WLST 嵌入了它自己的python 版本。通过在 WLST 中运行 sys.version 命令来检查它。
猜你喜欢
  • 2020-05-10
  • 2019-09-24
  • 1970-01-01
  • 1970-01-01
  • 2018-06-23
  • 1970-01-01
  • 2022-08-18
  • 1970-01-01
  • 2023-03-20
相关资源
最近更新 更多