如何用Python更新.env文件整数值并去除引号格式
解决python-dotenv修改.env文件时自动添加单引号的问题
问题说明
我用Python代码修改config.env里的DAY、CAR1、CAR2等整数配置项,已经实现修改功能,但修改后的值会被自动包裹单引号(比如DAY='77'),希望改成纯整数形式(DAY=77)。
原代码:
import os import dotenv from dotenv import load_dotenv day = input("Insert day: ") car1 = input("Insert car1 : ") car2 = input("Insert car2 : ") load_dotenv("config.env") os.environ["DAY"] = day os.environ["CAR1"] = car1 os.environ["CAR2"] = car2 dotenv.set_key("config.env", "DAY", os.environ["DAY"]) dotenv.set_key("config.env", "CAR1", os.environ["CAR1"]) dotenv.set_key("config.env", "CAR2", os.environ["CAR2"])
当前config.env内容:
## Config SCNAME="EXAMPLE" DAY='77' # CAR 1 CAR1='88' # CAR 2 CAR2='99'
期望的config.env内容:
DAY=77 CAR1=88 CAR2=99
原因
dotenv.set_key方法默认会对字符串类型的值添加引号,而input()获取的内容都是字符串,所以会自动加上单引号。
解决方案
有两种简单的处理方式:
方法1:将输入转换为整数类型
把用户输入的字符串转成整数后再传入set_key,方法会识别为数值类型,不会添加引号:
import os import dotenv from dotenv import load_dotenv # 转换输入为整数 day = int(input("Insert day: ")) car1 = int(input("Insert car1 : ")) car2 = int(input("Insert car2 : ")) load_dotenv("config.env") os.environ["DAY"] = str(day) os.environ["CAR1"] = str(car1) os.environ["CAR2"] = str(car2) dotenv.set_key("config.env", "DAY", day) dotenv.set_key("config.env", "CAR1", car1) dotenv.set_key("config.env", "CAR2", car2)
方法2:使用quote_mode='never'参数
直接在set_key方法中添加quote_mode='never'参数,强制禁用自动添加引号的行为,适合不需要验证输入是否为整数的场景:
import os import dotenv from dotenv import load_dotenv day = input("Insert day: ") car1 = input("Insert car1 : ") car2 = input("Insert car2 : ") load_dotenv("config.env") os.environ["DAY"] = day os.environ["CAR1"] = car1 os.environ["CAR2"] = car2 # 添加quote_mode='never'参数 dotenv.set_key("config.env", "DAY", os.environ["DAY"], quote_mode='never') dotenv.set_key("config.env", "CAR1", os.environ["CAR1"], quote_mode='never') dotenv.set_key("config.env", "CAR2", os.environ["CAR2"], quote_mode='never')
效果验证
修改后,config.env里的对应配置项会变成:
DAY=77 CAR1=88 CAR2=99
内容的提问来源于stack exchange,提问作者triplero34
相关产品推荐
相关产品推荐

