Python 3.x Python文件输入异常行为

Python 3.x Python文件输入异常行为,python-3.x,Python 3.x,我有以下问题:我愿意使用python替换yaml文件中的一些子字符串。我使用fileInput成功地实现了这一功能,但对我想要搜索/查找的内容进行了编码。如果我改用变量(这就是我最后想要的),它就不起作用了 不确定这里会发生什么。。。这是我的密码: def replace_version_in_config_file(local_filename, current_version, version): logging.info("replacing version "

我有以下问题:我愿意使用python替换yaml文件中的一些子字符串。我使用
fileInput
成功地实现了这一功能,但对我想要搜索/查找的内容进行了编码。如果我改用变量(这就是我最后想要的),它就不起作用了

不确定这里会发生什么。。。这是我的密码:

def replace_version_in_config_file(local_filename, current_version, version):
    logging.info("replacing version " + str(current_version) + " for version " + str(version) + " in file " + str(local_filename))
    with fileinput.FileInput(local_filename, inplace=False, backup='.bak') as file:
        for line in file:
            print(line.replace(str(current_version), str(version)), end='')
现在,如果我这样调用此函数,代码将正常工作:

replace_version_in_config_file("/tmp/multiconnect-coreapp.yml", "2.0", "3.0")
但如果我使用变量,它不会:

replace_version_in_config_file(str(file_to_change), str(old_version), str(new_version))
我已经检查了变量,它们里面有它们应该有的东西:

2020-10-02 13:57:16,504 :: WARNING :: configfile: /tmp/multiconnect-coreapp.yml
2020-10-02 13:57:16,504 :: WARNING :: current version: 2.27.8,
2020-10-02 13:57:16,504 :: WARNING :: version: 2.29.3,
为了以防万一,当传递给函数时,我正在
str'ing
它们。 我正在搜索的内容(本例中为“2.27.8”)存在于我正在处理的文件中


我就是找不到这里发生了什么。

一个包含字符串且字符串与文字相同的变量将具有相同的行为。请确保变量中包含的字符串中没有任何不可打印/难以看到的字符。您所说的“它不工作”是什么意思?“它不工作”这意味着它不会替换文件中的子字符串,即使在其中。如果我运行同一个函数,但使用文字文本而不是变量,则该函数可以作为一个符咒!现在,如果我使用变量运行它(当然,在变量中有正确的值)它不会做任何替换。不确定它是否没有做替换,或者没有找到它应该做什么。