如何使用glob.glob的输出读取输出的文件?

2024-10-02 20:40:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个程序,它扫描特定的文件类型,并读取特定的“命令”。我有密码 filenameglob = (glob.glob("*.doremi"))但是在返回带有print的变量时,它会显示为['test.doremi'],而不是最佳的test.doremi。问题是我不能用它来读取文件。如何使用glob搜索文件,输出名称,然后读取具有该名称的文件


Tags: 文件test命令程序名称密码glob文件类型
1条回答
网友
1楼 · 发布于 2024-10-02 20:40:22

基本答案

glob.glob返回与运行时传递的搜索条件相匹配的项目列表,如果未找到匹配项,则返回空列表。这就是为什么您得到的是['test.doremi']而不是test.doremi

示例中的filenameglob变量是一个包含1个元素的列表,即字符串test.doremi,可以使用列表中的索引来访问该元素,即filenameglob[0]test.doremi

假设目标目录中有0或1.doremi个文件,下面的代码为您的原始问题提供了适当的答案/解决方案

import glob

filenameglob = glob.glob("*.doremi")

if filenameglob: # If glob.glob returned list of matches
    filename = filenameglob[0] # Take first item from filename glob
    print(filename)
    with open(filename, "r") as f: # Open file in read mode
        contents = f.read() # Read contents from file to variable
    # Do something with contents read from .doremi file
    
else: # Else if glob.glob returned empty list
    print("No .doremi file found!")
    # Define behaviour in case of no .doremi file found

正在处理目录中的多个.doremi文件

根据您最初的问题,上面的代码假设执行目录中有0或1个扩展名为.doremi的文件

如上所述,glob.glob根据运行时传递给函数的参数返回表示匹配项的字符串列表-在本例中为'*.doremi'

因此,如果glob.glob在执行目录中找到多个.doremi文件,您可能需要考虑如何处理这些文件

一种解决方案可能是编写一个函数,定义如何处理从每个.doremi文件读取的内容,并在循环中为glob.glob返回的每个项调用该函数。请参阅下面的示例,了解如何执行此操作

import glob

def process_contents(contents):
    # Process file contents here

filenameglob = glob.glob("*.txt")

if filenameglob: # If glob.glob returned list of matches
    for filename in filenameglob: # For each file in filenameglob list
        print(filename)
        with open(filename, "r") as f: # Open current file in read mode
            contents = f.read() # Read contents from current file to variable
            process_contents(contents) # Send contents from file to function for processing
            
else: # Else if glob.glob returned empty list
    print("No .doremi files found!")
    # Define behaviour in case of no .doremi files found

上述代码将适用于glob.glob返回的任何数量(0…n)的文件,因此我建议采用这种方法,以更好地降低代码处理“错误的”.doremi文件的风险,这可能发生在基本答案中,因为它只处理列表中的第一个文件,即使存在多个文件

相关问题 更多 >