gpt4 book ai didi

python - 如何阻止 Python 2.7 RawConfigParser 在选项卡上抛出 ParsingError?

转载 作者:太空狗 更新时间:2023-10-29 14:43:11 25 4
gpt4 key购买 nike

我正在编写一个与 Python 2.7.13Python 3.3 兼容的包,并使用以下内容:

try:
import configparser
except:
from six.moves import configparser

但是当我在 Python 2.7 上加载我的 .gitmodules 文件时:

    configParser   = configparser.RawConfigParser( allow_no_value=True )
configFilePath = os.path.join( current_directory, '.gitmodules' )

configParser.read( configFilePath )

它抛出错误:

Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
self.run()
File "update.py", line 122, in run
self.create_backstroke_pulls()
File "update.py", line 132, in create_backstroke_pulls
configParser.read( configFilePath )
File "/usr/lib/python2.7/ConfigParser.py", line 305, in read
self._read(fp, filename)
File "/usr/lib/python2.7/ConfigParser.py", line 546, in _read
raise e
ParsingError: File contains parsing errors: /cygdrive/d/.gitmodules
[line 2]: '\tpath = .versioning\n'
[line 3]: '\turl = https://github.com/user/repo\n'

但是如果我从 .gitmodules 文件中删除选项卡,它就可以正常工作。在 Python 3.3 上它可以使用选项卡,只有在 Python 2.7.13 上它不能使用选项卡。如何在不删除选项卡的情况下使其工作?

当我添加新的子模块时,标签由 git 原生放置,所以我绝对不会从原始文件中删除它们。我一直在想我可以复制文件,同时删除选项卡。但是,是否有成本更低的操作来与 Python 兼容?


相关问题:

  1. How can I remove the white characters from configuration file?

最佳答案

一个解决方法是使用 io.StringIO,修改内容,传递给 readfp(它接受文件句柄而不是文件名)。

以下代码试图同时遵守 Python 2 和 Python 3(即使在 Python 3 中,readfp 已被弃用,现在是 read_file。无论如何它仍然有效).请注意,我不需要 six 包,configparser 原生存在于 2 和 3 python 版本中。

try:
import ConfigParser as configparser
except ImportError:
import configparser

import io
try:
unicode
except NameError:
unicode = str # python 3: no more unicode

r = configparser.RawConfigParser()

with open(configFilePath) as f:
fakefile = io.StringIO(unicode(f.read().replace("\t","")))

r.readfp(fakefile,filename=configFilePath)

所以解析器被读取一个文件内容减去标签的假文件“愚弄”。

关于python - 如何阻止 Python 2.7 RawConfigParser 在选项卡上抛出 ParsingError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45415684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com