ConfigParser成功设置了新值,但没有出现在ini Python 3中

时间:2017-05-20 17:45:46

标签: python python-3.x configparser

我在配置解析器模块工作时遇到了一些麻烦。我目前正在创建文件备份程序,但每当我设置它们时,它们都不会显示在.ini文件中。 config.get确认已正确设置,但document_backup.ini为空。

config = configparser.ConfigParser()
config.read('document_backup.ini')
config.set('FTP_Login','Host',input("FTP Host: "))
config.set('FTP_Login','UserName',input("FTP UserName: "))
config.set('FTP_Login','Password',input("FTP Password: "))
config.read('') #To close the file, I think

2 个答案:

答案 0 :(得分:3)

修改内存配置不会影响最初读取的文件。您需要将新配置写回磁盘。

config = configparser.ConfigParser()
config.read('document_backup.ini')
config.set('FTP_Login','Host',input("FTP Host: "))
config.set('FTP_Login','UserName',input("FTP UserName: "))
config.set('FTP_Login','Password',input("FTP Password: "))
with open("document_backup.ini.new", "w") as fh:
    config.write(fh)
os.rename("document_backup.ini", "document_backup.ini~")
os.rename("document_backup.ini.new", "document_backup.ini")

请注意,configparser模块无法提供编辑现有配置文件的任何方法。新文件将生成等效配置,但可能与原始文件的格式不同。

答案 1 :(得分:0)

#include <stdio.h> #include <ctype.h> #include <string.h> #define MK 20 #define ML 81 void changeStr(char str[],char New[]) { int i,iNew = 0; int lenStr = strlen(str); for(i=0;i<lenStr;i++) if ( str[i]>= '0' && str[i]<= '9') New[iNew++]=str[i]; New[iNew]=NULL; } int main() { char str[ML],New[ML]= {0}; printf("Enter string: \n"); gets(str); changeStr(str,New); if(New[0] == '\0') { printf("No changes in string.\n"); } else { printf("Changed string:\n"); printf("%s",New); } return 0; } 未关闭文件...

试试这个,它对我有用:

config.read('')

从中读取:

config = ConfigParser.RawConfigParser()
config.add_section("MyApp")
config.set("MyApp", "window_height", self.height())
config.set("MyApp", "window_width", self.width())
configfile = open("/path/to/the/file.ini", 'w')
config.write(configfile)
configfile.close()

它也适用于config = ConfigParser.RawConfigParser() config.read("/path/to/the/file.ini") self.width = config.getint("MyApp", "window_height") self.height = config.getint("MyApp", "window_width") 或简单地config.getboolean("MyApp","variable")用于字符串