Python实现多文件非空检查并将结果写入输出文件
解决文件处理需求的Python实现
看起来你需要处理一批文件,筛选出非空文件并把它们的文件名和内容汇总到output.txt里对吧?我给你写个完整的实现,还会解释每个步骤的作用,方便你理解调整。
首先先明确需求细节:
- 遍历给定的文件列表
- 跳过空文件(包括内容全是空白字符的文件)
- 把非空文件的文件名和内容(去掉多余的换行/空白)用空格分隔,最终全部写入
output.txt
完整代码实现
# 定义要处理的文件列表,你可以根据实际情况修改这个列表 file_list = ["1.html", "2.html", "3.html"] output_content = [] for filename in file_list: try: # 打开文件读取内容,用utf-8编码避免乱码 with open(filename, 'r', encoding='utf-8') as f: content = f.read().strip() # strip()去掉内容前后的换行、空格、制表符 # 判断内容是否非空 if content: # 把文件名和内容拼接成指定格式的字符串 output_content.append(f"{filename} {content}") except FileNotFoundError: print(f"警告:文件 {filename} 不存在,已跳过") except Exception as e: print(f"处理文件 {filename} 时出错:{str(e)}") # 将收集到的内容用空格连接,写入output.txt with open("output.txt", 'w', encoding='utf-8') as output_file: output_file.write(' '.join(output_content))
代码说明
- 文件列表:你可以把
file_list换成你实际需要处理的文件路径列表,比如包含绝对路径的["/home/user/docs/1.html", ...] - 异常处理:加入了
try-except块,避免因为文件不存在、权限问题等导致程序崩溃,还会给出提示信息 - 空文件判断:用
content = f.read().strip()后判断if content,这样既会跳过大小为0的空文件,也会跳过内容全是空白字符的文件(比如只有换行或空格的文件) - 写入方式:用
' '.join(output_content)把所有符合条件的项用空格连接,然后写入output.txt,这样最终的格式就和你例子里的一致:1.html a 2.html b
如果你的需求里“空文件”仅指文件大小为0(不管内容是不是空白),可以把判断逻辑改成:
import os # 在循环里替换判断部分 if os.path.getsize(filename) > 0: content = f.read().strip() output_content.append(f"{filename} {content}")
这样就完全符合你的需求啦,你可以根据实际情况调整细节~
内容的提问来源于stack exchange,提问作者Milister
相关产品推荐
相关产品推荐

