Python 如何在目录中查找列表项? 我需要解析.docx文档,并找出文档中提到的.wav文件是否在声音目录中可用(如果声音目录中存在一些.wav文件) 我能够解析文档并将.wav文件名存储在列表中,但我不知道如何搜索声音目录中是否有列表项 此外,我无法提供声音目录的完整路径 我的目录结构类似于“E:\Package\somefolder\sound” 我的代码正在存储下面提到的列表 导入操作系统 导入docx2txt 进口稀土 parent_dir=“E:\PackageTesting”#您的目录在这里 def get_all_文件(目录名称): file\u list=os.listdir(目录名) 所有_文件=列表() #迭代所有条目 对于文件列表中的条目: #创建完整路径 完整路径=os.path.join(目录名,条目) #如果条目是目录,则获取该目录中的文件列表 如果os.path.isdir(完整路径): 所有文件=所有文件+获取所有文件(完整路径) 其他: 所有文件。追加(完整路径) 返回所有\u文件 所有文件在目录中=获取所有文件(父目录) 对于所有目录中的文件: 如果os.path.basename(文件)和os.path.splitext(文件)[1]=>.docx]中的“Sound_Doc”: 打印(格式(文件)) MY_TEXT=docx2txt.process(格式(文件)) wav=re.findall(r'[\w\.-]+w+a+[\w\.-]+',我的文字) 打印(wav)

Python 如何在目录中查找列表项? 我需要解析.docx文档,并找出文档中提到的.wav文件是否在声音目录中可用(如果声音目录中存在一些.wav文件) 我能够解析文档并将.wav文件名存储在列表中,但我不知道如何搜索声音目录中是否有列表项 此外,我无法提供声音目录的完整路径 我的目录结构类似于“E:\Package\somefolder\sound” 我的代码正在存储下面提到的列表 导入操作系统 导入docx2txt 进口稀土 parent_dir=“E:\PackageTesting”#您的目录在这里 def get_all_文件(目录名称): file\u list=os.listdir(目录名) 所有_文件=列表() #迭代所有条目 对于文件列表中的条目: #创建完整路径 完整路径=os.path.join(目录名,条目) #如果条目是目录,则获取该目录中的文件列表 如果os.path.isdir(完整路径): 所有文件=所有文件+获取所有文件(完整路径) 其他: 所有文件。追加(完整路径) 返回所有\u文件 所有文件在目录中=获取所有文件(父目录) 对于所有目录中的文件: 如果os.path.basename(文件)和os.path.splitext(文件)[1]=>.docx]中的“Sound_Doc”: 打印(格式(文件)) MY_TEXT=docx2txt.process(格式(文件)) wav=re.findall(r'[\w\.-]+w+a+[\w\.-]+',我的文字) 打印(wav),python,Python,您可以拥有目录中所有文件的列表,并使用以下行进行浏览: import os for filename in os.listdir(directory): with open (directory+'/'+filename) as f: #your code here 您可以拥有目录中所有文件的列表,并使用以下行进行浏览: import os for filename in os.listdir(directory): with open (directory

您可以拥有目录中所有文件的列表,并使用以下行进行浏览:

import os

for filename in os.listdir(directory):
    with open (directory+'/'+filename) as f:
        #your code here

您可以拥有目录中所有文件的列表,并使用以下行进行浏览:

import os

for filename in os.listdir(directory):
    with open (directory+'/'+filename) as f:
        #your code here
看一看,它包含关于如何递归查找目录中的文件的信息。因此,您可以像下面这样查找每个wav文件:

import os

def find_file(root_dir, filename):
    for root, dirs, files in os.walk(root_dir):
        for file in files:
            if file == filename:
                 return True # return true if file was found
    print("Not found: " + filename) # print full path
    return False # return false if file was not found

for wav_file in wav_file_list:
    find_file(parent_dir, wav_file)
import os

def find_all_wav_files(root_dir):
    wav_files = set()
    for root, dirs, files in os.walk(root_dir):
        for file in files:
            if file.endswith(".wav"):
                 wav_files.add(os.path.join(root, file))
    return wav_files
wav = parse_your_docx(docx_file)
wav_files = find_all_wav_files("your/sound/directory")

for w in wav:
    if w in wav_files:
        print(w + " exists!")
    else:
        print(w + " does not exist!")
如果您有很多文件和目录,您可能希望将所有wav文件放在一个集合中以加快查找速度,否则脚本可能需要很长时间才能运行

按如下方式创建集合:

import os

def find_file(root_dir, filename):
    for root, dirs, files in os.walk(root_dir):
        for file in files:
            if file == filename:
                 return True # return true if file was found
    print("Not found: " + filename) # print full path
    return False # return false if file was not found

for wav_file in wav_file_list:
    find_file(parent_dir, wav_file)
import os

def find_all_wav_files(root_dir):
    wav_files = set()
    for root, dirs, files in os.walk(root_dir):
        for file in files:
            if file.endswith(".wav"):
                 wav_files.add(os.path.join(root, file))
    return wav_files
wav = parse_your_docx(docx_file)
wav_files = find_all_wav_files("your/sound/directory")

for w in wav:
    if w in wav_files:
        print(w + " exists!")
    else:
        print(w + " does not exist!")
然后,您可以检查wav文件是否存在,如下所示:

import os

def find_file(root_dir, filename):
    for root, dirs, files in os.walk(root_dir):
        for file in files:
            if file == filename:
                 return True # return true if file was found
    print("Not found: " + filename) # print full path
    return False # return false if file was not found

for wav_file in wav_file_list:
    find_file(parent_dir, wav_file)
import os

def find_all_wav_files(root_dir):
    wav_files = set()
    for root, dirs, files in os.walk(root_dir):
        for file in files:
            if file.endswith(".wav"):
                 wav_files.add(os.path.join(root, file))
    return wav_files
wav = parse_your_docx(docx_file)
wav_files = find_all_wav_files("your/sound/directory")

for w in wav:
    if w in wav_files:
        print(w + " exists!")
    else:
        print(w + " does not exist!")
函数
find_all_wav_files()
将返回指定为第一个参数的目录中的一组所有wav文件。然后,您可以像第二个代码段中所示的列表一样对其进行搜索。

看一看,它包含有关如何在目录中递归查找文件的信息。因此,您可以像下面这样查找每个wav文件:

import os

def find_file(root_dir, filename):
    for root, dirs, files in os.walk(root_dir):
        for file in files:
            if file == filename:
                 return True # return true if file was found
    print("Not found: " + filename) # print full path
    return False # return false if file was not found

for wav_file in wav_file_list:
    find_file(parent_dir, wav_file)
import os

def find_all_wav_files(root_dir):
    wav_files = set()
    for root, dirs, files in os.walk(root_dir):
        for file in files:
            if file.endswith(".wav"):
                 wav_files.add(os.path.join(root, file))
    return wav_files
wav = parse_your_docx(docx_file)
wav_files = find_all_wav_files("your/sound/directory")

for w in wav:
    if w in wav_files:
        print(w + " exists!")
    else:
        print(w + " does not exist!")
如果您有很多文件和目录,您可能希望将所有wav文件放在一个集合中以加快查找速度,否则脚本可能需要很长时间才能运行

按如下方式创建集合:

import os

def find_file(root_dir, filename):
    for root, dirs, files in os.walk(root_dir):
        for file in files:
            if file == filename:
                 return True # return true if file was found
    print("Not found: " + filename) # print full path
    return False # return false if file was not found

for wav_file in wav_file_list:
    find_file(parent_dir, wav_file)
import os

def find_all_wav_files(root_dir):
    wav_files = set()
    for root, dirs, files in os.walk(root_dir):
        for file in files:
            if file.endswith(".wav"):
                 wav_files.add(os.path.join(root, file))
    return wav_files
wav = parse_your_docx(docx_file)
wav_files = find_all_wav_files("your/sound/directory")

for w in wav:
    if w in wav_files:
        print(w + " exists!")
    else:
        print(w + " does not exist!")
然后,您可以检查wav文件是否存在,如下所示:

import os

def find_file(root_dir, filename):
    for root, dirs, files in os.walk(root_dir):
        for file in files:
            if file == filename:
                 return True # return true if file was found
    print("Not found: " + filename) # print full path
    return False # return false if file was not found

for wav_file in wav_file_list:
    find_file(parent_dir, wav_file)
import os

def find_all_wav_files(root_dir):
    wav_files = set()
    for root, dirs, files in os.walk(root_dir):
        for file in files:
            if file.endswith(".wav"):
                 wav_files.add(os.path.join(root, file))
    return wav_files
wav = parse_your_docx(docx_file)
wav_files = find_all_wav_files("your/sound/directory")

for w in wav:
    if w in wav_files:
        print(w + " exists!")
    else:
        print(w + " does not exist!")

函数
find_all_wav_files()
将返回指定为第一个参数的目录中的一组所有wav文件。然后,您可以像第二个代码段中所示的列表一样搜索它。

您可以使用glob模块列出目录中的文件和目录

glob模块查找与指定模式匹配的所有路径名 根据unixshell使用的规则,虽然结果是 按任意顺序返回

返回与路径名匹配的路径名的可能为空的列表,其中 必须是包含路径规范的字符串。路径名可以是 绝对值(如/usr/src/Python-1.5/Makefile)或相对值(如 ../../Tools/.gif),并且可以包含shell样式的通配符。破碎的 符号链接包含在结果中(如在shell中)。是否 结果的排序取决于文件系统

注意:对于wav文件和文档,使用*以类似的方式列出所有内容,分别为“.wav”和“.docx”

ex: glob.glob('E:\Package\somefolder\sound\'+'*.wav')

您可以使用glob模块列出目录中的文件和目录

glob模块查找与指定模式匹配的所有路径名 根据unixshell使用的规则,虽然结果是 按任意顺序返回

返回与路径名匹配的路径名的可能为空的列表,其中 必须是包含路径规范的字符串。路径名可以是 绝对值(如/usr/src/Python-1.5/Makefile)或相对值(如 ../../Tools/.gif),并且可以包含shell样式的通配符。破碎的 符号链接包含在结果中(如在shell中)。是否 结果的排序取决于文件系统

注意:对于wav文件和文档,使用*以类似的方式列出所有内容,分别为“.wav”和“.docx”

ex: glob.glob('E:\Package\somefolder\sound\'+'*.wav')

你能不能更具体地谈谈你面临的实际问题?如果我读对了这个问题,那么从Word文档中读取文件列表的事实是无关紧要的。您拥有的是一个文件名列表,您想知道它们是否在给定目录中编辑?@Roy2012我必须从Word文档中获取该列表,因为文档中提到了所有文件,并且文件名中提到了一些特殊字符,需要删除。因此,我将文件名存储在列表中,然后删除特殊字符。@TheOneMusic谢谢..这非常有效。另外,有没有办法只从wav字符串的开头或结尾去掉特殊字符,因为有些字符的结尾带有一个点,如abc.wav。能否请您更具体地说明您面临的实际问题?如果我读对了这个问题,那么从Word文档中读取文件列表的事实是无关紧要的。您拥有的是一个文件名列表,您想知道它们是否在给定目录中编辑?@Roy2012我必须从Word文档中获取该列表,因为文档中提到了所有文件,并且文件名中提到了一些特殊字符,需要删除。因此,我将文件名存储在列表中,然后删除特殊字符。@TheOneMusic谢谢..这非常有效。还有什么办法可以脱掉这个特色菜吗