python读写ini文件

配置文件conf.ini
内容如下:

[FILE_DATA]
wav_path=opt/wav/test/
label_file=opt/wav/test.word.txt
savedir=opt/
savefile=speech.cpkt
tensorboardfile=opt/logs

写了一个类,实现读写ini文件

# -*- coding:utf-8 -*-

import os
import configparser

current_dir = os.path.abspath(os.path.dirname(__file__))

class OperationalError(Exception):
    """operation error."""

class Dictionary(dict):
    """ custom dict."""

    def __getattr__(self, key):
        return self.get(key, None)

    __setattr__ = dict.__setitem__
    __delattr__ = dict.__delitem__

class Config:
    def __init__(self, file_name="conf", cfg=None):
        """
        @param file_name: file name without extension.
        @param cfg: configuration file path.
        """
        #print(os.environ.items())
        env = {}
        for key, value in os.environ.items():
            if key.startswith("TEST_"):
                env[key] = value

        config = configparser.ConfigParser(env)

        if cfg:
            config.read(cfg)
        else:
            config.read(os.path.join(current_dir, "conf", "%s.ini" % file_name))

        for section in config.sections():
            setattr(self, section, Dictionary())
            #print(config.items(section))
            for name, raw_value in config.items(section):
                try:
                    # Ugly fix to avoid '0' and '1' to be parsed as a
                    # boolean value.
                    # We raise an exception to goto fail^w parse it
                    # as integer.
                    if config.get(section, name) in ["0", "1"]:
                        raise ValueError

                    value = config.getboolean(section, name)
                except ValueError:
                    try:
                        value = config.getint(section, name)
                    except ValueError:
                        value = config.get(section, name)

                setattr(getattr(self, section), name, value)

    def get(self, section):
        """Get option.
        @param section: section to fetch.
        @return: option value.
        """
        try:
            return getattr(self, section)
        except AttributeError as e:
            raise OperationalError("Option %s is not found in "
                                   "configuration, error: %s" %
                                   (section, e))
    def set(self, section,item,name):
        try:
            return setattr(getattr(self, section), item, name)
        except AttributeError as e:
            raise OperationalError("Option %s is not found in "
                                   "configuration, error: %s" %
                                   (section, e))

if __name__ == "__main__":
    conf = Config()
    print(conf.get("FILE_DATA").wav_path)
    conf.set("FILE_DATA","wav_path","test")
    print(conf.get("FILE_DATA").wav_path)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您可以使用SpringMVC和JSP来实现文件上传的界面。下面是一个简单的示例: 首先,在您的JSP页面中创建一个表单,用于选择和上传文件: ```jsp <form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" value="上传" /> </form> ``` 然后,在您的SpringMVC的控制器中处理文件上传的请求,将文件保存到您自定义的目录: ```java @Controller public class UploadController { @RequestMapping(value = "/upload", method = RequestMethod.POST) public String uploadFile(@RequestParam("file") MultipartFile file) { if (!file.isEmpty()) { try { // 获取文件名 String fileName = file.getOriginalFilename(); // 自定义保存目录 String saveDir = "/your/custom/directory/"; // 创建目标文件对象 File saveFile = new File(saveDir + fileName); // 保存文件 file.transferTo(saveFile); // 文件保存成功后的逻辑处理 return "success"; } catch (IOException e) { e.printStackTrace(); } } return "error"; } } ``` 在上述示例中,`@RequestParam("file")`用于绑定表单中的文件字段,`MultipartFile`用于接收文件数据。您可以根据需要自定义保存目录,并在`transferTo`方法中指定目标文件路径。 请确保在您的项目中正确配置了SpringMVC,并且定义了相应的视图解析器和控制器映射。此外,还需要添加相应的依赖库,如Apache Commons FileUpload。 这样,当您选择文件并点击上传按钮时,文件将被传递到控制器中进行处理,并保存到您指定的目录中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值