[python]glob模块中的glob()函数为什么返回空列表??

摘要:
最近在学习语音的知识,看一个语音合成实现的相关工具包的源代码,碰到了glob()函数。摘自官网解释:https://docs.python.org/2/library/glob.html#module-glob简而言之,这个函数的作用呢就是按照unixshell的规则匹配一定模式的路径名,返回一个无序的列表。关键问题是不要使用相对路径,要使用绝对路径,上面官网解释也说了,对于~和shell变量使用os.path.expanduser()和os.path.expandvars()扩展。

最近在学习语音的知识,看一个语音合成实现的相关工具包的源代码,碰到了glob()函数。然后开启了我与这个函数相爱想杀的一个下午。

摘自官网解释:

https://docs.python.org/2/library/glob.html#module-glob

[python]glob模块中的glob()函数为什么返回空列表??第1张

简而言之,这个函数的作用呢就是按照unix shell的规则匹配一定模式的路径名,返回一个无序的列表。

我的代码使用:

from os.path importjoin
from glob importglob
importnumpy as np

DATA_ROOT = "~/文档/nnmnkwii/nnmnkwii_gallery-master/data/slt_arctic_full_data"files = sorted(glob(join(DATA_ROOT, "merlin_baseline_practice", "duration_data", "label_state_align", "*.lab")))
print("{} 
".format(files))
for file infiles:
    print("{} 
".format(file))

我是要用这个代码匹配对应文件夹下的.lab文件,但是明明文件夹下有数据,但是返回的就是个空列表。

关键问题是不要使用相对路径,要使用绝对路径,

上面官网解释也说了,对于~和shell变量使用os.path.expanduser()和os.path.expandvars()扩展。

for tilde and shell variable expansion, use os.path.expanduser() and os.path.expandvars().

将DATA_ROOT中的”~“改成”/home/tangli“就ok了。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ok,不重要的其他碎碎念,如果过程这么简单就好了,但是毕竟是耗费了我一个下午的时间与精力的故事。

源码中有个.py文件也用到了这个函数,和我上面的代码几乎没有差别,也用的相对路径。

但是该源代码运行良好,毫无问题,所以是命运暗中出了差错吗?

后来经过大佬相助,可能命运对我施以援手,看不得我被bug折磨的痛苦不堪吧,毕竟五一劳动节我还在辛勤劳动调bug。

后来发现,该源代码中有这样几行代码:

from docopt importdocopt
if __name__ == "__main__":
    args = docopt(__doc__)
    DATA_ROOT = args["<DATA_ROOT>"]
    DST_ROOT =DATA_ROOT
    max_num_files = int(args["--max_num_files"])
    overwrite = args["--overwrite"]
    use_phone_alignment = args["--use_phone_alignment"]
    question_path = args["--question_path"]

    print(DATA_ROOT)

问题就在第一行,这个神奇的模块的作用,将我传递的DATA_ROOT参数的相对路径改成了绝对路径。

若诸君感兴趣,就去研究源代码吧,奉上链接:

https://github.com/docopt/docopt

done!

免责声明:文章转载自《[python]glob模块中的glob()函数为什么返回空列表??》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇DDOS hulk,rudy自定义SAP用户密码规则下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

webpack打包vue项目,资源路径如何从绝对路径改为相对路径?css中的图片资源如何修改配置?

资源相对引用路径 问题描述 一般情况下,通过webpack+vuecli默认打包的css、js等资源,路径都是绝对的。 但当部署到带有文件夹的项目中,这种绝对路径就会出现问题,因为把配置的static文件夹当成了根路径,那么要解决这种问题,就得引用相对路径。 解决办法 打开webpack.prod.conf.js 找到output:增加publicPat...

[Python]IO密集型任务 VS 计算密集型任务

所谓IO密集型任务,是指磁盘IO、网络IO占主要的任务,计算量很小。比如请求网页、读写文件等。当然我们在Python中可以利用sleep达到IO密集型任务的目的。 所谓计算密集型任务,是指CPU计算占主要的任务,CPU一直处于满负荷状态。比如在一个很大的列表中查找元素(当然这不合理),复杂的加减乘除等。 多线程即在一个进程中启动多个线程执行任务。一般来...

Python--命令行参数解析Demo

写没有操作界面的程序时,最讨厌的就是参数解析问题,尤其是很多参数那种,下面是一个小Demo,拿出来与各位分享: 1 # -*- coding:utf8 -*- 2 import os 3 import datetime 4 import sys 5 from optparse import OptionParser 6 7...

Python使用Turtle绘制分形树

2020/02/25 Python使用Turtle绘制分形树 效果如下: Code: 1 ''' 2 作者:清扬 3 功能:利用递归绘制分型树 4 版本:1.0 5 日期:2020/02/25 6 ''' 7 8 importturtle 9 10 defdraw_branch(branch_length): 11 ''' 12 绘制分型树...

python数据结构-数组/列表/栈/队列及实现

首先 我们要分清楚一些概念和他们之间的关系 数组(array)  表(list)  链表(linked list)  数组链表(array list)   队列(queue)  栈(stack) list列表 array数组 python中内置list数据结构 存放的数据类型可以不同。 但是有个缺点 list存放的是数据的索引也就是指针 这需要数据的原有...

Python之socket_tcp

1.1socket编程之tcp编程 """ socket类型 sock_stream 面向连接的流套接字,默认值 tcp协议 sock_dgram 无连接的数据报文套接字,udp协议 """ import socket s = socket.socket() s.bind(('127.0.0.1',9999)) #bind接受一个2元祖 s.liste...