[python]glob模块中的glob()函数为什么返回空列表??
最近在学习语音的知识,看一个语音合成实现的相关工具包的源代码,碰到了glob()函数。然后开启了我与这个函数相爱想杀的一个下午。
摘自官网解释:
https://docs.python.org/2/library/glob.html#module-glob

简而言之,这个函数的作用呢就是按照unix shell的规则匹配一定模式的路径名,返回一个无序的列表。
我的代码使用:
from os.path import join
from glob import glob
import numpy 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("{} \n".format(files))
for file in files:
print("{} \n".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 import docopt
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()函数为什么返回空列表??的更多相关文章
- Python itertools模块中的product函数
product 用于求多个可迭代对象的笛卡尔积(Cartesian Product),它跟嵌套的 for 循环等价.即: product(A, B) 和 ((x,y) for x in A for y ...
- python第二十课——math模块中常用的函数
属性: e:自然数 pi:圆周率 函数: ceil():向上取整 floor():向下取整 sqrt():开平方根 radians():角度转弧度 degrees():弧度转角度 import mat ...
- Python3:numpy模块中的argsort()函数
Python3:numpy模块中的argsort()函数 argsort函数是Numpy模块中的函数: >>> import numpy >>> help(nu ...
- python读取excel中单元格的内容返回的5种类型
(1) 读取单个sheetname的内容. 此部分转自:https://www.cnblogs.com/xxiong1031/p/7069006.html python读取excel中单元格的内容返回 ...
- python3中使用xpath无法定位,为什么一直返回空列表?
tbody问题: 在爬去某些网站一些信息的时候,xpath工具上显示类容是正确的,但是在scrapy代码中一直返回空列表 Scrapy的部分代码: class LotteryspiderSpider( ...
- Python常用模块中常用内置函数的具体介绍
Python作为计算机语言中常用的语言,它具有十分强大的功能,但是你知道Python常用模块I的内置模块中常用内置函数都包括哪些具体的函数吗?以下的文章就是对Python常用模块I的内置模块的常用内置 ...
- 嵌入Python系列 | 调用Python模块中无参数函数
开发环境 Python版本:3.6.4 (32-bit) 编辑器:Visual Studio Code C++环境:Visual Studio 2013 需求说明 在用VS2013编写的Win32程序 ...
- Python Json模块中dumps、loads、dump、load函数介绍
1.json.dumps() json.dumps()用于将dict类型的数据转成str,因为如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到该函数. import ...
- Python multiprocess模块(中)
主要内容: 一. 锁 二. 信号量 三. 事件 通过event来完成红绿灯模型 四. 队列(重点) 队列实现进程间的通信 五. 生产者消费者模型 1. 初始版本(程序会阻塞住) 2. 升级版本一(通过 ...
随机推荐
- java代码用continue输出奇数——————————
总结:continue用法是:在for,do-while.while循环中 并且,continue的意思是跳出循环的剩余部分,进行下一次循环.不是下一步循环 package com.b; import ...
- MongoDB 3.4 高可用集群搭建(二)replica set 副本集
转自:http://www.lanceyan.com/tech/mongodb/mongodb_repset1.html 在上一篇文章<MongoDB 3.4 高可用集群搭建(一):主从模式&g ...
- Redis事务和watch
redis的事务 严格意义来讲,redis的事务和我们理解的传统数据库(如mysql)的事务是不一样的. redis中的事务定义 Redis中的事务(transaction)是一组命令的集合. 事务同 ...
- 虚幻引擎4设置Visual Studio
转自:http://www.unrealchina.net/portal.php?mod=view&aid=149 设置Visual Studio和虚幻引擎4协同工作有利于提高开发人员使用UE ...
- windows下socket编程:区分shutdown()及closesocket()
以下描述主要是针对windows平台下的TCP socket而言. 首先需要区分一下关闭socket和关闭TCP连接的区别,关闭TCP连接是指TCP协议层的东西,就是两个TCP端之间交换了一些协议包( ...
- RVO和NRVO
返回值优化(Return Value Optimization,简称RVO),是这么一种优化机制:当函数需要返回一个对象的时候,如果自己创建一个临时对象用户返回,那么这个临时对象会消耗一个构造函数(C ...
- 第五章 Java中锁
Lock接口 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,比如读写锁).在Lock接口出现之前,Java程序 ...
- Python之函数目录(自定义函数,内置函数,装饰器,迭代器,生成器)
1.初始函数 2.函数嵌套及作用域 3.装饰器 4.迭代器和生成器 6.内置函数 7.递归函数 8.匿名函数 9.函数相关定义 10.三元表达式.列表推导式.生成器表达式 11.函数与方法的区别
- ASP.NET 连接MySql数据库
ASP.NET Mysql操作类 以下连接MySql数据库以VS2010为例,对于其他的编辑器也差不多 1. 我们需要在Mysql官网下载一个组件http://dev.mysql.com/downlo ...
- iOS多线程各种安全锁介绍 - 线程同步
一.atomic介绍 github对应Demo:https://github.com/Master-fd/LockDemo 在iOS中,@property 新增属性时,可以增加atomic选项,ato ...