[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. 升级版本一(通过 ...
随机推荐
- DataX实现oracle到oracle之间的数据传递
首先需要注意的是DATAX是通过JDBC的方式读取ORACLE数据,然后通过OCI的方式写数据,DX也可以通过JDBC写的方式进行,但是OCI比JDBC速度更快. 进入DataX安装目录的bin目 ...
- 蓝桥杯 基础训练 BASIC-27 2n皇后问题
基础练习 2n皇后问题 时间限制:1.0s 内存限制:512.0MB 问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都 ...
- springboot+springcloud config
参考:sorry,全找不到了,当时没记录,最后后知后觉觉得应该记录,所以后面的都有在asfood父项目中的doc文件夹下记录,望见谅. 1. springconfig server 1.1. pom. ...
- 什么是VBA,他有什么作用
目录 什么是VBA,它有什么作用 VBA在哪里存放的?怎么运行的 什么是宏?宏和VBA有什么关系? 录制一个宏 编写第一个宏 一.什么是VBA,它有什么作用 VBA是一种编程语言,它依托于Office ...
- Java-API:java.util.map
ylbtech-Java-API:java.util.map compact1, compact2, compact3 java.util Interface Map<K,V> Type ...
- Angular学习笔记-问题列表(2016.4.7)
1.控制器中注入服务时,出问题,当前pageInit这个页面无法加载,页面无报错信息. var homepage = angular.module('homepage'); homepage.cont ...
- 转:MySQL InnoDB Add Index实现调研
MySQL InnoDB Add Index实现调研 MySQL Add Index实现 MySQL各版本,对于add Index的处理方式是不同的,主要有三种: Copy Table方式 这是Inn ...
- web页面导出到Excel乱码解决
引言: 前几天 在做web项目的时候 需要导出页面上的数据 到Excel里面 但有的时候出现乱码(有de时候不出现 很奇怪) 原来的代码是这样的: HttpContext.Current.Respon ...
- Python函数(四)-递归函数
递归函数就是函数在自己内部调用自己 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" def Digui(n): print(n ...
- Win7无法访问Windows共享文件夹
解决方法如下 On the Windows 7 machine: Run secpol.msc Drill down through Local Policies | Security Options ...