使用glob无法识别指定文件夹内CSV文件,求正确用法及排查方案
解决glob无法识别CSV文件的问题
首先咱们先揪出你代码里的几个关键问题,一步步搞定:
1. glob路径写法的核心问题
你当前写的path = "C:/build/Files*.csv"大概率是路径匹配逻辑错了:
- 如果想匹配**
C:/build文件夹下所有CSV文件**,正确路径应该是:path = "C:/build/*.csv" - 如果确实要匹配该文件夹下以
Files开头的CSV文件,那得先确认文件夹里真的有这类命名的文件(比如Files_01.csv、Files_sales.csv),要是文件根本不是Files开头,glob肯定找不到。 - 另外Windows系统里,路径也可以用转义反斜杠写法,比如
"C:\\build\\Files*.csv",两种写法都能正常工作,但必须和实际文件夹结构完全对应。
2. 结果文件的打开模式错了
你打开Result.csv用的是'r'(只读)模式,但既然要写入计算结果,得改成'w'(覆盖写入)或者'a'(追加写入)模式,不然会因为无法写入报错。另外你这里的路径少了个斜杠,C:PycharmProjects应该是C:/PycharmProjects,不然会被当成相对路径,后续也容易出问题。
修正后的完整示例代码
import glob # 根据实际需求选正确路径 path = "C:/build/*.csv" # 匹配build文件夹下所有CSV # path = "C:/build/Files*.csv" # 匹配build文件夹下以Files开头的CSV # 先打印匹配结果,方便排查是否找到文件 print(f"找到的文件列表: {glob.glob(path)}") for fileName in glob.glob(path): print(f"正在处理: {fileName}") with open(fileName, 'r') as file, \ open('C:/PycharmProjects/Result.csv', 'a', newline='') as result_file: # 这里写你的计算逻辑,举个简单例子: import csv reader = csv.reader(file) writer = csv.writer(result_file) for row in reader: # 比如对数字单元格乘2 processed_row = [int(cell)*2 if cell.isdigit() else cell for cell in row] writer.writerow(processed_row)
额外排查小技巧
- 先单独打印
glob.glob(path)的结果,如果是空列表,说明路径或通配符完全不匹配,得仔细核对文件夹路径、文件名拼写。 - 确认目标文件夹确实存在,并且你的程序有访问该文件夹的权限。
内容的提问来源于stack exchange,提问作者Joe James
相关产品推荐
相关产品推荐

