我在配置解析器模块工作时遇到了一些麻烦。我目前正在创建文件备份程序,但每当我设置它们时,它们都不会显示在.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
答案 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")
用于字符串