例如:需要将文件 A 中第 1 部分的 x、y 和 z 行复制到文件 B 中括号之间的第 1 部分。
需要帮助,如果给定多个文件,文件 A 部分 1 中的行数将是更改,因此总是需要在括号之间复制到括号之间。
文件 A:
Section 1
{
x
y
z
}
Section 2
{
a
b
c
}
文件 B:
Section 1
{
}
Section 2
{
}
我是新的,所以目前我所能做的就是从一个文件复制到另一个文件文件通过:
with open("File A", "r") as infile, open("File B",'w') as outfile:
copy = False
for line in infile:
if line.strip() == "Section 1":
copy = True
elif line.strip() == "}":
copy = False
elif copy:
outfile.write(line)
但是这会复制到一个新文件中:
{
x
y
z
因此尝试找出如何不复制
{
,然后也能够在
{}
之间粘贴到新文件中
取决于部分它位于。
def copy_section_between_braces(file_a, file_b):
"""将文件 A 中括号内的部分复制到文件 B 中相同部分的括号内。
Args:
file_a: 源文件路径。
file_b: 目标文件路径。
"""
with open(file_a, "r") as infile_a, open(file_b, "r+") as infile_b:
lines_a = infile_a.readlines()
lines_b = infile_b.readlines()
# 找到文件 A 和文件 B 中第一个 '{' 的索引
index_a = lines_a.index("{\n")
index_b = lines_b.index("{\n")
# 将文件 A 中 '{' 后面的行复制到文件 B 中 '{' 后面
lines_b[index_b + 1:index_b + 1] = lines_a[index_a + 1:]
# 将修改后的内容写回文件 B
infile_b.seek(0)
infile_b.writelines(lines_b)
# 示例用法
file_a = "文件 A"
file_b = "文件 B"
copy_section_between_braces(file_a, file_b)
代码解释:
-
定义函数
copy_section_between_braces(file_a, file_b)
: -
该函数接受两个参数:
file_a
(源文件路径) 和file_b
(目标文件路径)。 -
打开文件:
-
使用
with open(...) as ...:
语句以读取模式打开源文件 (file_a
),以读写模式 ("r+"
) 打开目标文件 (file_b
)。这样可以同时读取和写入目标文件。 -
读取文件内容:
-
使用
readlines()
方法将两个文件的内容读取到列表lines_a
和lines_b
中。 -
找到 '{' 的索引:
-
使用
index("{\n")
方法找到第一个出现的 "{\n"(表示括号开始)的索引,分别存储在index_a
和index_b
中。 -
复制行:
-
使用切片操作将源文件
lines_a
中从index_a + 1
开始到末尾的所有行复制到目标文件lines_b
中,插入位置为index_b + 1
。这样可以确保将内容复制到目标文件括号内的正确位置。 -
写回文件:
-
使用
seek(0)
方法将文件指针移到目标文件的开头。 -
使用
writelines()
方法将修改后的lines_b
写回目标文件。 -
调用函数:
- 设置源文件和目标文件的文件名。
-
调用
copy_section_between_braces()
函数执行复制操作。
使用方法:
-
将上面的代码保存为 Python 文件 (例如
copy_section.py
)。 - 将 "文件 A" 和 "文件 B" 替换为实际的源文件和目标文件路径。
-
运行代码:
python copy_section.py
这会将源文件中第一个 "{" 后面的内容复制到目标文件中对应位置。
标签:python From: 78809299