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谢谢..这非常有效。还有什么办法可以脱掉这个特色菜吗