python3 如何创建一个.ini的配置文件。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3 如何创建一个.ini的配置文件。相关的知识,希望对你有一定的参考价值。

参考技术A 1、说明:
python3使用configparser模块来处理ini配置文件。
2、代码示例:
需要生成conf.ini配置文件如下:
[config]
v1
=
100
v2
=
abc
v3
=
true
v4
=
123.45
python代码:
import
configparser
#
加载现有配置文件
conf
=
configparser.ConfigParser()
#
写入配置文件
conf.add_section('config')
#添加section
#
添加值
conf.set('config',
'v1',
'100')
conf.set('config',
'v2',
'abc')
conf.set('config',
'v3',
'true')
conf.set('config',
'v4',
'123.45')
#
写入文件
with
open('conf.ini',
'w')
as
fw:

conf.write(fw)
#
读取配置信息
v1
=
conf.getint('config',
'v1')
v2
=
conf.get('config',
'v2')
v3
=
conf.getboolean('config',
'v3')
v4
=
conf.getfloat('config',
'v4')
print('v1:',
v1)
print('v2:',
v2)
print('v3:',
v3)
print('v4:',
v4)
打开conf.ini文件检查内容
3、模块常用函数:
1)读取配置文件
read(filename)
直接读取ini文件内容
sections()
得到所有的section,并以列表的形式返回
options(section)
得到该section的所有option
items(section)
得到该section的所有键值对
get(section,option)
得到section中option的值,返回为string类型
getint(section,option)
得到section中option的值,返回为int类型,还有相应的getboolean()和getfloat()
函数。
2)写入配置文件
add_section(section)
添加一个新的section
set(
section,
option,
value)
对section中的option进行设置,需要调用write将内容写入配置文件。

如何创建一个 .INI 文件以在 Java 中存储一些设置?

【中文标题】如何创建一个 .INI 文件以在 Java 中存储一些设置?【英文标题】:How to create an .INI file to store some settings in Java? 【发布时间】:2010-09-16 15:32:05 【问题描述】:

我想创建一个 ini 文件来存储我的应用程序的一些设置。找到 jar 文件所在的位置并在那里创建一个 ini 文件是个好主意吗?如果是,那么我怎样才能找到 jar 文件的位置?

但如果您知道此类问题的更好解决方案,我想听听其中的一些。

编辑:我正在使用 mac,我想在 windows 中运行相同的应用程序。我可以在 System.getProperty("user.home") 目录中写一些东西,但是如果用户决定删除应用程序,我想保持系统清洁。没有更好的方法来存储设置文件,例如与应用程序在同一目录中?

【问题讨论】:

【参考方案1】:

如果设置仅由您的应用程序编写(而不是手动编辑),请考虑使用Preferences API。

【讨论】:

【参考方案2】:

使用 .properties 文件而不是 INI 文件的想法很好。此外,如果您在其中存储一些敏感数据,您可以考虑对其进行加密。看看这个:

https://www.owasp.org/index.php/How_to_encrypt_a_properties_file

或者这个:

encrypt and decrypt property file value in java

【讨论】:

【参考方案3】:

这取决于您的 ini 在正常情况下是否需要人类可读/可写。如果没有,您可以使用属性文件而不是 ini 文件,并将其存储在“用户”目录中。

至于查找 jar 文件,您必须找到已知从 jar 加载的类的 ClassLoader,检查它是否是适当类型的 ClassLoader(即它是真的从 jar 中加载),您可以从中提取路径。如果这真的是你想要的,我可能会挖掘出代码来做到这一点。我不一定会推荐它。

EDIT user.home 属性将为您提供可以安全使用的用户目录。

【讨论】:

user.dir 为您提供当前的工作目录,这可能不安全或不合适。 user.home 为您提供用户的主目录。 假设 'user.home' 属性为您提供每个环境的适当值是否安全?也就是说,*nix 上的 /home/user、Windows 的相关 Documents 和 Settings 子目录等? 这就是'user.home'应该做的事情。 哎呀 - 是的,很明显我的意思是 user.home(编辑以避免误导)【参考方案4】:

您可以使用 ClassLoader 找到您的应用程序目录。请参阅:Java: finding the application directory。使用 .properties 文件而不是 .INI 文件 - 您可以通过 Properties 类加载和保存它。

正如其他人所指出的,您不应将用户设置写入应用程序目录。如果用户对应用程序目录没有写权限怎么办?如果您的应用程序同时被同一系统上的多个用户使用怎么办?即使在 Windows 上,这些情况都不是不寻常的。

您可能仍想从应用程序目录加载一些设置 - 也许管理员已在那里配置了默认设置。

一个常见的约定是将用户设置保存到用户的主目录:

/home/user/.eclipse
C:\Documents and Settings\User\.eclipse

虽然这意味着您可能会留下杂散文件,但如果用户重新安装应用程序,这可能会有所帮助。在自述文件中记录这些内容。以下是如何创建和获取对目录的引用:

public static File getSettingsDirectory() 
    String userHome = System.getProperty("user.home");
    if(userHome == null) 
        throw new IllegalStateException("user.home==null");
    
    File home = new File(userHome);
    File settingsDirectory = new File(home, ".myappdir");
    if(!settingsDirectory.exists()) 
        if(!settingsDirectory.mkdir()) 
            throw new IllegalStateException(settingsDirectory.toString());
        
    
    return settingsDirectory;

在类 unix 操作系统上,以句点 (".myappdir") 开头的目录名称将使目录隐藏。在 Windows 上,它将位于 我的文档 下方,因此用户不会看到该目录,除非他们去寻找它。

【讨论】:

【参考方案5】:

Java 程序员通常不使用 .ini 文件,而是使用 .properties 文件(不同的格式)。如果你愿意,你可以使用 java.lang.Properties 类作为一个很好的编程包装器。

虽然您可以通过调用类的 .class 成员的 getProtectionDomain().getCodeSource().getLocation() 来获取 jar 文件的位置,但我建议您这样做。

我会将文件写入 System.getProperty("user.home") 目录 - 用户的主目录,或者如果它是真正的临时目录,则 System.getProperty("java.io.tmpdir")

【讨论】:

嗯...我是 Java 的菜鸟,所以是的 .properties 是一个更好的主意。但是,当您使用 Java 编写应用程序时,您将设置存储在哪里。我用的是mac,但我也想在windows环境下运行。【参考方案6】:

您不应将临时文件存储在应用程序的安装目录中。请记住,运行应用程序的用户可能没有对该目录的写入权限。放置此类内容最安全的地方是 C:\Documents and Settings\username\Application Data\ApplicationName 文件夹(根据需要调整名称)。

不过,我可能会将这类内容存储在注册表中,而不是存储在他们计算机上的文件中。 (但是,那只是我。)

【讨论】:

那么在 MacOS 中运行相同的应用程序呢?我完全同意这篇文章..codinghorror.com/blog/archives/000939.html 所以我认为注册表根本不是一个好主意:)

以上是关于python3 如何创建一个.ini的配置文件。的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Python3读写INI配置文件

如何使用Python3读写INI配置文件

如何用 Python3 读写 INI 文件?

为 Eclipse RCP 项目生成默认的 config.ini

python3.9 读写ini文件

如何使用Python3读取配置文件