Python实现:将多目录下文件内容合并至统一列表
解决目录遍历与文件行提取的问题
嘿,我发现你现有代码里藏着一个很容易踩的坑——用os.system("cd " + folder)切换目录其实不会改变Python主进程的工作路径,它只是在临时启动的子shell里切换了目录,子shell结束后就失效了,这会导致你后面打开myOutputFile时,实际访问的还是原来的目录,根本找不到目标文件。
咱们直接重构代码,避开这个问题,同时实现你要的功能:
import os # 先定义你的目录总数,替换成实际数值 nfolders = 10 # 初始化存储结果的列表 extracted_lines = [] for i in range(nfolders): # 生成两位数字格式的目录名,比如00、01... folder_name = "%02d" % i # 用os.path.join构建完整的文件路径,跨平台还不会出错 target_file = os.path.join(folder_name, "myOutputFile") # 用with语句打开文件,自动帮你关闭,避免资源泄漏 with open(target_file, "r") as f: all_lines = f.readlines() # 提取第一行并转成float,追加到列表 first_line = float(all_lines[0].strip()) extracted_lines.append(first_line) # 提取接下来的5行,这里默认保留字符串格式,需要转类型可以自己调整 # 注意要判断文件行数是否足够,避免索引越界(可选但推荐) if len(all_lines) >= 6: next_five = [line.strip() for line in all_lines[1:6]] extracted_lines.extend(next_five) else: # 如果文件行数不够,可以加个提示或者跳过 print(f"警告:目录{folder_name}下的文件行数不足6行") # 现在extracted_lines就是按目录0到n顺序整理好的所有行啦 print(extracted_lines)
几个关键细节说明:
- 路径构建:用
os.path.join代替手动拼接路径,不仅跨Windows/Linux/macOS都能用,还能避免因为漏写斜杠导致的路径错误 - 文件安全处理:
with语句会在代码块结束后自动关闭文件,比手动调用f.close()更可靠,就算中途报错也不会漏掉关闭操作 - 索引越界防护:加了一个简单的判断,如果文件行数不够6行,会给出提示,避免程序直接崩溃
- 列表操作:用
extend把接下来5行逐个加入列表,如果你想把这5行作为一个子列表整体加入,换成append(next_five)就行
内容的提问来源于stack exchange,提问作者J. P.
相关产品推荐
相关产品推荐

