Python将多个文件中的内容插入到主文件中,以创建修改文件的副本



我正在尝试将特定行从一个文件(a.xyz(插入到另一个文件中的特定位置(1.inp(。我可以为一个文件a.xyz执行此操作,然而,当我试图创建一个for循环来获取多个文件(如a.xyz和b.xyz(并将它们插入1.inp文件时,它形成了两个文件,一个包含a.inp中的a.xyz,另一个包含b.inp中有b.xyz,我遇到了问题。因此,循环迭代并将a.xyz放入1.inp中,使a.inp正常,但当它再次运行时,它将a.xyz和b.xyz插入1.inp以创建b.inp,而我希望它只将b.xyz放入名为b.inp的文件中,依此类推。这些文件链接在下面

https://drive.google.com/drive/folders/1eCaFm_3_t7IFRlfQW5yw7oz_8HvYsFL0?usp=sharing

这是我的代码

import os
import glob
import re
import pandas as pd
file_location = os.path.join('xyz','*.xyz')
filenames =glob.glob(file_location)
print(filenames)
with open("1.inp","r") as inp:
template = inp.readlines()

array_files=[]
for file in filenames:
file_name =os.path.basename(file)
split_filename = file_name.split('.')
molecule_name = split_filename[0]

with open (file) as f_input:
array_files.append(f_input.read()[3:-1])
for array in array_files:
template.insert(81, array)

with open(molecule_name+".inp", "w") as new_inpfile:  
new_inpfile.write("n".join(template))

这是一个简单的修复,我刚刚将template=inp.readlines((移动到for循环中

import os
import glob
import re
import pandas as pd
file_location = os.path.join('xyz','*.xyz')
filenames =glob.glob(file_location)
print(filenames)

array_files=[] 
for file in filenames:
file_name =os.path.basename(file)
split_filename = file_name.split('.')
molecule_name = split_filename[0]    

with open (file) as f_input:
array_files.append(f_input.read()[3:-1]) 
for array in array_files:
with open("1.inp","r") as inp:
template = inp.readlines()
template.insert(81, array) 


with open(molecule_name+".inp", "w") as new_inpfile:  
new_inpfile.write("n".join(template))

最新更新