我有一个主目录,其中有许多子目录。每个子目录进一步有各种PNG文件和一个子目录。我的问题总结在下面的代码片段。
# import
from from pathlib import Path, PurePath
# mount drive
drive.mount('/content/drive')
for path in Path('/content/drive/MyDrive/Cape-Windy/Annotated-frames_COCO/').iterdir():
print(PurePath(Path(path).rglob('*.PNG')).stem)
这将生成
TypeError:应为字符串、字节或操作数。PathLike对象,而不是生成器
进一步实验:
for path in Path('/content/drive/MyDrive/Cape-Windy/Annotated-frames_COCO/').iterdir():
print(path)
生成子目录的路径
/内容/驱动器/我的驱动器/海角风/注解帧_COCO/海角_www.example.com ...和Windy-546053-processing_1-2020-10-25-19-29-44-759-coco-1.0.zip ... and
for path in Path('/content/drive/MyDrive/Cape-Windy/Annotated-frames_COCO/').iterdir():
print(Path(path).rglob('*.PNG'))
给予
〈生成器对象路径. rglob位于0x7f1c9b7d2f20〉...
根据文档,我怀疑Path.iterdir()返回的可能是一个PosixPath示例。虽然我不确定我的代码需要什么类型才能工作。如果有任何建议,我将不胜感激。代码是在google colab中用Python 3编写的,所有数据都在google drive中。
1条答案
按热度按时间juud5qan1#
你遇到的问题是因为Path.rglob方法返回了一个生成器对象,它不是字符串、字节或os.PathLike对象。要获得每个PNG文件的基本名称,而不带扩展名,你需要循环遍历生成器并提取每个文件的词干。现在你可以解决这个问题了。
这段代码循环遍历每个子目录,然后对每个子目录循环遍历所有PNG文件(包括子子目录中的文件),并打印每个文件的词干,即不带扩展名的基本名称。