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

如何在Python中使用with open自动保存至不同xls文件?

解决循环中生成不同文件名的问题

你遇到的问题很清晰:代码里的文件名是固定字符串,没有把循环变量num真正代入进去。你写的'C:\Users\Batman\Desktop\num.csv'里的num只是文件名的一部分,Python不会把它当成循环变量解析,所以每次循环都操作同一个文件,自然只生成了num.csv。

下面给你几个可行的解决方案:

1. 使用f-string格式化文件名(推荐,Python 3.6+)

这是最简洁直观的方式,直接在字符串里用{变量名}插入循环变量:

for num in (1,2,3,4):
    # 把num变量嵌入文件名,生成1.xls、2.xls等
    with open(f'C:\\Users\\Batman\\Desktop\\{num}.xls', 'w', encoding='ANSI') as f:
        # 这里写入你要保存的数据,比如:
        f.write(f"这是第{num}个文件的内容\n")
        # 注意:with语句会自动关闭文件,不需要手动调用f.close()

2. 用str.format()兼容旧版本Python

如果你的Python版本低于3.6,可以用字符串的format()方法:

for num in (1,2,3,4):
    file_path = 'C:\\Users\\Batman\\Desktop\\{}.xls'.format(num)
    with open(file_path, 'w', encoding='ANSI') as f:
        f.write("这是第{}个文件的内容\n".format(num))

额外提醒:关于Excel文件的生成

你提到要保存为.xls格式,但用open()直接写入的其实是文本文件,只是后缀改成了.xls,并非真正的Excel格式。如果需要生成标准的Excel文件,建议使用专门的库:

  • 对于.xls格式,用xlwt库:
import xlwt

for num in (1,2,3,4):
    # 创建工作簿和工作表
    workbook = xlwt.Workbook()
    sheet = workbook.add_sheet('Sheet1')
    # 在第一行第一列写入数据
    sheet.write(0, 0, f"这是第{num}个Excel文件")
    # 保存文件
    workbook.save(f'C:\\Users\\Batman\\Desktop\\{num}.xls')
  • 对于.xlsx格式,用openpyxl库:
from openpyxl import Workbook

for num in (1,2,3,4):
    workbook = Workbook()
    sheet = workbook.active
    sheet['A1'] = f"这是第{num}个Excel文件"
    workbook.save(f'C:\\Users\\Batman\\Desktop\\{num}.xlsx')

另外,原代码里的'a'模式是追加写入,如果每次要生成全新的文件,建议改用'w'模式(会覆盖已有同名文件);如果要保留已有文件内容再追加,就继续用'a'。

内容的提问来源于stack exchange,提问作者Luke

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:56:03