【发布时间】:2021-09-30 23:08:03
【问题描述】:
我收到了一些带有 .ini 文件的文件。我必须从 [FILES] 部分接收文件名。
有时 .ini 文件的另一部分中有一个额外的 witespace,这会在 ConfigParser 模块中引发异常
“坏”ini文件的例子:
[LETTER]
SUBJECT=some text
some text
and text with whitespace in the beggining
[FILES]
0=file1.txt
1=file2.doc
我的代码(Python 3.7):
import configparser
def get_files_from_ini_file(info_file):
ini = configparser.ConfigParser(allow_no_value=True)
ini.read(info_file) # ERROR is here
if ini.has_section("FILES"):
pocket_files = [ini.get("FILES", i) for i in ini.options("FILES")]
return pocket_files
print(get_files_from_ini_file("D:\\bad.ini"))
Traceback (most recent call last):
File "D:/test.py", line 10, in <module>
print(get_files_from_ini_file("D:\\bad.ini"))
File "D:/test.py", line 5, in get_files_from_ini_file
ini.read(info_file) # ERROR
File "C:\Users\ap\AppData\Local\Programs\Python\Python37-32\lib\configparser.py", line 696, in read
self._read(fp, filename)
File "C:\Users\ap\AppData\Local\Programs\Python\Python37-32\lib\configparser.py", line 1054, in _read
cursect[optname].append(value)
AttributeError: 'NoneType' object has no attribute 'append'
我无法影响我收到的文件,所以有什么办法可以忽略这个错误?事实上,我只需要 [FILES] 部分来解析。
已尝试 empty_lines_in_values=False 没有结果
可能是无效的 ini 文件,我应该编写自己的解析器?
【问题讨论】:
-
从来没有针对 INI 文件的规范。解释由用户决定。
-
问题是
SUBJECT后面的行不是以空格开头的;您可以预先解析文件并在这些实例中添加一个空格,但要决定何时需要一个空格并不容易 - 此时您最好自己获取所需的内容,因为配置是'开始无效。 -
@Grismar 明白了。谢谢
标签: python attributeerror configparser