为了账号安全,请及时绑定邮箱和手机立即绑定

在Python中保存多个文件

在Python中保存多个文件

慕的地8271018 2024-01-15 21:36:06
我试图在每次运行以下命令时创建一个新文件。目前它会创建 1 个文件并覆盖它。是否有一个方法可以使其不覆盖并为每个循环创建一个新文件?import xml.etree.ElementTree as ETimport timeimport csvwith open('OrderCSV.csv', newline='') as csvfile:    reader = csv.DictReader(csvfile)    for row in reader:        orders_data = ET.Element('orders_data')        orders = ET.SubElement(orders_data, 'orders')        ##Order Details        order_reference = ET.SubElement(orders, 'order reference')        order_reference.set('',"12345")        order_date = ET.SubElement(order_reference, 'order_date')        order_priority  = ET.SubElement(order_reference, 'order_priority')        order_category = ET.SubElement(order_reference, 'order_category')        delivery_service = ET.SubElement(order_reference, 'delivery_service')        delivery_service.text = row['delivery_service']        timestr = time.strftime("%Y%m%d%H%M%S")        mydata = ET.tostring(orders_data)        myfile = open(timestr, "wb")        myfile.write(mydata)
查看完整描述

2 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

您可以查看该文件是否已经存在并稍等一下


    while True:

        timestr = time.strftime("%Y%m%d%H%M%S")

        if not os.path.exists(timestr):

            break

        time.sleep(.1)

    with open(timestr, "wb") as myfile:

        mydata = ET.tostring(orders_data)

        myfile.write(mydata)

您不必等待,只需添加几秒钟即可。如果您每秒处理大量文件,这将导致文件名在时间上向前漂移。


    mytime = time.time()

    while True:

        timestr = time.strftime("%Y%m%d%H%M%S", time.localtime(mytime))

        if not os.path.exists(timestr):

            break

        time.sleep(.1)

    with open(timestr, "wb") as myfile:

        mydata = ET.tostring(orders_data)

        myfile.write(mydata)

另一种选择是在循环之前获取单个时间戳并随时更新它。


mytime = time.strftime("%Y%m%d%H%M%S")

for index, row in enumerate(reader):

     ....

     mytime = f"mytime-{index}"

     ....


查看完整回答
反对 回复 2024-01-15
?
当年话下

TA贡献1890条经验 获得超9个赞

每次运行循环时更改变量名称,我建议使用 with 语句打开文件,因为打开文件后还必须关闭它

with open(timestr, 'wb') as myfile:
    myfile.write(mydata)

编辑:我能想象到你的代码中唯一的缺陷是打开文件后没有关闭文件


查看完整回答
反对 回复 2024-01-15
  • 2 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信