You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python遍历文件夹文件读取xyz坐标的最佳实现方法

问题修正与实现方案

你现有代码有3个会直接导致运行失败的问题:

  1. os.chdir()的作用是修改当前Python进程的工作目录,没有返回值,赋值给DIRECTORY后得到的是None,后续os.listdir(DIRECTORY)会直接报错
  2. 直接调用open()打开文件后没有手动关闭,处理上千个文件很容易触发系统文件句柄占用限制
  3. 没有做路径合法性校验,遍历到子文件夹、无权限访问的条目时会直接中断整个循环

推荐实现(新手友好版)

用Python3.4+自带的pathlib模块处理路径,不用手动拼接路径,配合with上下文管理器自动关闭文件,容错率更高:

from pathlib import Path

# 直接指定目标文件夹的绝对路径,不需要修改全局工作目录
TARGET_FOLDER = Path(r"C:\Py Practice\Files")
# 存储所有文件的坐标结果,key为文件名,value为对应文件的xyz坐标列表
all_file_coords = {}

for file_item in TARGET_FOLDER.iterdir():
    # 跳过子文件夹、快捷方式等非普通文件,如果只需要特定后缀的文件可以加判断:
    # if file_item.suffix != ".txt": continue
    if not file_item.is_file():
        continue

    current_coords = []
    # with语句会在代码块执行结束后自动关闭文件,哪怕中途报错也不会留文件占用
    with open(file_item, "r", encoding="utf-8") as f:
        # 逐行读取文件内容,自动跳过空行
        for line in f:
            stripped_line = line.strip()
            if not stripped_line:
                continue
            # 按你的文件实际分隔符调整split的参数:
            # 逗号分隔就用 split(","),制表符分隔就用 split("\t")
            x, y, z = map(float, stripped_line.split())
            current_coords.append( (x, y, z) )

    all_file_coords[file_item.name] = current_coords
    # 打印进度,处理1000个文件时可以直观看到运行状态
    print(f"处理完成:{file_item.name},共读取{len(current_coords)}组坐标")

适配不同场景的调整技巧

  • 如果你的文件带表头(第一行是x y z这类列名),在逐行读的逻辑前加一句next(f)就能跳过第一行
  • 如果是标准csv格式文件,用内置csv模块解析比手动split容错率更高:
    import csv
    with open(file_item, "r", encoding="utf-8") as f:
        csv_reader = csv.reader(f)
        next(csv_reader) # 跳过表头
        for row in csv_reader:
            x, y, z = map(float, row)
            current_coords.append( (x, y, z) )
    
  • 怕单个文件损坏导致整个循环中断的话,给单文件处理逻辑加异常捕获,出错时打印日志后跳过即可:
    for file_item in TARGET_FOLDER.iterdir():
        if not file_item.is_file():
            continue
        try:
            # 放上面的读文件、解析坐标逻辑
        except Exception as e:
            print(f"读取{file_item.name}失败:{str(e)}")
            continue
    

内容的提问来源于stack exchange,提问作者landon.1111

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 05:42:13