Python 3.x Python文件输入异常行为
我有以下问题:我愿意使用python替换yaml文件中的一些子字符串。我使用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 "
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”)存在于我正在处理的文件中
我就是找不到这里发生了什么。一个包含字符串且字符串与文字相同的变量将具有相同的行为。请确保变量中包含的字符串中没有任何不可打印/难以看到的字符。您所说的“它不工作”是什么意思?“它不工作”这意味着它不会替换文件中的子字符串,即使在其中。如果我运行同一个函数,但使用文字文本而不是变量,则该函数可以作为一个符咒!现在,如果我使用变量运行它(当然,在变量中有正确的值)它不会做任何替换。不确定它是否没有做替换,或者没有找到它应该做什么。