如何使用 Python 将一组文本插入文件的特定行号
How to insert a set of text to a particular line number of a file using Python
我正在尝试编写一个 python 程序,它可以输入一组字典格式的文本以及行号。我需要将这组文本添加到 .yaml 文件的特定行号。
我有一个 Kubernetes deployment.yaml 文件,我需要我的 Python 程序将字典中的文本添加到特定的行号(第 29 行,在 cpu:deployment.yaml 文件中的“500m” 和 volumeMounts:)。
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
volumeMounts:
- name: ephemeral
mountPath: "/tmp"
volumes:
- name: ephemeral
emptyDir: {}
test.py
yaml_change={
"change": '''
tolerations:
- key: "example-key"
operator: "Exists"
effect: "NoSchedule"
'''
}
line_number = 29
yaml_modification = yaml_change['change']
with open('values.yaml', 'r') as FileRead:
yaml_data = FileRead.readlines()
yaml_data = yaml_data[line_number-2]+yaml_modification
print(yaml_data)
with open('values.yaml', 'w') as FileWrite:
FileWrite.writelines(yaml_data)
当我 运行 python 文件时,字典中的文本文件被添加到 .yaml 文件中。但是,所有其他内容都丢失了。
之前
之后
有人知道如何完成这个要求吗?
尝试将行 yaml_data = yaml_data[line_number-2]+yaml_modification
更改为
yaml_data.insert(line_number - 1, yaml_modification)
yaml_data
是文件中所有行的列表。 list.insert(idx, obj)
函数在给定位置插入对象。
您的解决方案不起作用,因为您正在添加要添加的内容和之前的行 (yaml_data[line_number-2]
)。
我正在尝试编写一个 python 程序,它可以输入一组字典格式的文本以及行号。我需要将这组文本添加到 .yaml 文件的特定行号。
我有一个 Kubernetes deployment.yaml 文件,我需要我的 Python 程序将字典中的文本添加到特定的行号(第 29 行,在 cpu:deployment.yaml 文件中的“500m” 和 volumeMounts:)。
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
volumeMounts:
- name: ephemeral
mountPath: "/tmp"
volumes:
- name: ephemeral
emptyDir: {}
test.py
yaml_change={
"change": '''
tolerations:
- key: "example-key"
operator: "Exists"
effect: "NoSchedule"
'''
}
line_number = 29
yaml_modification = yaml_change['change']
with open('values.yaml', 'r') as FileRead:
yaml_data = FileRead.readlines()
yaml_data = yaml_data[line_number-2]+yaml_modification
print(yaml_data)
with open('values.yaml', 'w') as FileWrite:
FileWrite.writelines(yaml_data)
当我 运行 python 文件时,字典中的文本文件被添加到 .yaml 文件中。但是,所有其他内容都丢失了。
之前
之后
有人知道如何完成这个要求吗?
尝试将行 yaml_data = yaml_data[line_number-2]+yaml_modification
更改为
yaml_data.insert(line_number - 1, yaml_modification)
yaml_data
是文件中所有行的列表。 list.insert(idx, obj)
函数在给定位置插入对象。
您的解决方案不起作用,因为您正在添加要添加的内容和之前的行 (yaml_data[line_number-2]
)。