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
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
返回与运行时传递的搜索条件相匹配的项目列表,如果未找到匹配项,则返回空列表。这就是为什么您得到的是['test.doremi']
而不是test.doremi
示例中的
filenameglob
变量是一个包含1个元素的列表,即字符串test.doremi
,可以使用列表中的索引来访问该元素,即filenameglob[0]
是test.doremi
假设目标目录中有0或1
.doremi
个文件,下面的代码为您的原始问题提供了适当的答案/解决方案正在处理目录中的多个
.doremi
文件根据您最初的问题,上面的代码假设执行目录中有0或1个扩展名为
.doremi
的文件如上所述,
glob.glob
根据运行时传递给函数的参数返回表示匹配项的字符串列表-在本例中为'*.doremi'
因此,如果
glob.glob
在执行目录中找到多个.doremi
文件,您可能需要考虑如何处理这些文件一种解决方案可能是编写一个函数,定义如何处理从每个
.doremi
文件读取的内容,并在循环中为glob.glob
返回的每个项调用该函数。请参阅下面的示例,了解如何执行此操作上述代码将适用于
glob.glob
返回的任何数量(0…n)的文件,因此我建议采用这种方法,以更好地降低代码处理“错误的”.doremi
文件的风险,这可能发生在基本答案中,因为它只处理列表中的第一个文件,即使存在多个文件相关问题 更多 >
编程相关推荐