在 Python 中更改文件的一部分 (txt)



我想知道是否可以使用 Python 更改 txt/yaml 文件中一行的一部分?

我有这样的文件:

main:
  Player1:
    points: 5
  Player2:
    points: 2

我想要的是更改指定玩家的积分(即玩家 1 有 5 分,我想将其更改为 10)?这可能吗?

提前感谢!

实现所需目标的最聪明方法是解析 yaml 文件,对解析的内容进行更改,然后重写文件。

这比以某种方式弄乱原始文件要健壮得多。您的数据采用有效的指定表示形式 (yaml),使用它很有意义。

您需要先安装 pyYAML,以便您拥有解析文件的代码。(使用易于安装或 PIP)。

下面的代码段可以满足您的需求。我注释了每一行,以告诉您它的作用。我鼓励你理解每一行,而不仅仅是复制粘贴这个例子,因为这就是你学习编程语言的方式。

# the library you need to parse the yaml file
import yaml
# maybe you are on Python3, maybe not, so this makes the print function work
# further down
from __future__ import print_function
#this reads the file and closes it once the with statement is over
with open('source.yml', 'r') as file_stream:
    # this parses the file into a dict, so yml_content is then a dict
    # you can freely change
    yml_content = yaml.load(file_stream)
# proof that yml_content now contains your data as a dict
print(yml_content)
# make the change
yml_content['main']['Player1']['points'] = 10
#proof that yml_content now contains changed data
print(yml_content)
# transform the dict back to a string (default_flow_style makes the
# representation of the yml equal to the original file)
yml_string = yaml.dump(yml_content, default_flow_style=False)
# open a the file in write mode, transform the dict to a valid yml string
# write the string to the file, close the file
with open('source.yml', 'w') as new_file:
    new_file.write(yml_string)

相关内容

  • 没有找到相关文章

最新更新