首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遍历目录路径并使用trimesh打开它们

遍历目录路径并使用trimesh打开它们
EN

Stack Overflow用户
提问于 2017-06-10 15:38:13
回答 2查看 922关注 0票数 1

我有以下代码:

代码语言:javascript
复制
import os
import trimesh

# Core settings
rootdir = 'path'
extension = ".zip"


for root, dirs, files in os.walk(rootdir):
    if not root.endswith(".zip"):
        for file in files:
            if file.endswith(".stl"):
                mesh = trimesh.load(file)

我得到了以下错误:

代码语言:javascript
复制
ValueError: File object passed as string that is not a file!

然而,当我逐一打开文件时,它就能工作了。可能是什么原因?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-10 15:40:38

这是因为file是文件名,而不是完整的文件路径

通过将os.path.join与包含的目录一起使用,可以修复这个问题:

代码语言:javascript
复制
mesh = trimesh.load(os.path.join(root,file))
票数 2
EN

Stack Overflow用户

发布于 2017-06-10 17:16:20

这不是对你问题的直接回答。但是,您可能有兴趣注意到,对于这种情况,现在有一个不那么复杂的范例。它涉及到使用pathlib模块。

我不使用trimesh。我将处理pdf文档。

首先,只需一行就可以递归地识别目录及其子目录中的所有pdf文件。

代码语言:javascript
复制
>>> from pathlib import Path
>>> for item in path.glob('**/*.pdf'):
...     item
... 
WindowsPath('C:/Quantarctica2/Quantarctica-Get_Started.pdf')
WindowsPath('C:/Quantarctica2/Quantarctica2_GetStarted.pdf')
WindowsPath('C:/Quantarctica2/Basemap/Terrain/BEDMAP2/tc-7-375-2013.pdf')    WindowsPath('C:/Quantarctica2/Scientific/Glaciology/ALBMAP/1st_ReadMe_ALBMAP_LeBrocq_2010_EarthSystSciData.pdf')
WindowsPath('C:/Quantarctica2/Scientific/Glaciology/ASAID/Bindschadler2011TC_GroundingLines.pdf')

WindowsPath('C:/Quantarctica2/Software/CIA_WorldFactbook_Antarctica.pdf')
WindowsPath('C:/Quantarctica2/Software/CIA_WorldFactbook_SouthernOcean.pdf')
WindowsPath('C:/Quantarctica2/Software/QGIS-2.2-UserGuide-en.pdf')

您将注意到:(a)提供了完整的路径,(b)在对象实例中可以使用路径。幸运的是,使用str很容易恢复完整的路径。

代码语言:javascript
复制
>>> import fitz
>>> for item in path.glob('**/*.pdf'):
...     doc = fitz.Document(str(item))
... 

这一行显示最终的pdf文档已经作为一个fitz文档加载,可以进行后续处理。

代码语言:javascript
复制
>>> doc
fitz.Document('C:\Quantarctica2\Software\QGIS-2.2-UserGuide-en.pdf')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44475130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档