我有一个文件,它将10段数据存储到一个文件中(我们将这些文件称为10S
)。通常,每个部分都会获得其单独的文件。我想将每个部分附加到另一个文件中,但我需要将以前编写的文件复制10次(每个数据部分复制一次)。我试图在一个包含24个不同的10S
文件的目录中执行此操作。数据的每个部分都以MODEL
数字开始,并以ENDMDL
结束。10S
文件的格式如下:
MODEL 1
HETATM 1 N LIG L 2 103.724 127.482 115.429 1.00 1.00 N
HETATM 2 C LIG L 2 104.244 126.274 114.627 1.00 1.00 C
HETATM 3 C LIG L 2 104.270 124.877 115.271 1.00 1.00 C
HETATM 4 C LIG L 2 104.790 123.669 114.469 1.00 1.00 C
HETATM 5 C LIG L 2 106.049 122.916 114.940 1.00 1.00 C
HETATM 6 O LIG L 2 105.991 121.396 115.179 1.00 1.00 O
HETATM 7 O LIG L 2 107.364 123.683 115.170 1.00 1.00 O
HETATM 8 H LIG L 2 103.707 128.376 115.017 1.00 1.00 H
HETATM 9 H LIG L 2 103.409 127.360 116.354 1.00 1.00 H
HETATM 10 H LIG L 2 104.574 126.402 113.658 1.00 1.00 H
HETATM 11 H LIG L 2 103.940 124.749 116.241 1.00 1.00 H
HETATM 12 H LIG L 2 104.992 124.020 113.479 1.00 1.00 H
HETATM 13 H LIG L 2 104.012 122.944 114.585 1.00 1.00 H
ENDMDL
MODEL 2
HETATM 1 N LIG L 2 103.717 127.477 115.429 1.00 1.00 N
HETATM 2 C LIG L 2 104.273 126.292 114.619 1.00 1.00 C
HETATM 3 C LIG L 2 104.255 124.874 115.217 1.00 1.00 C
HETATM 4 C LIG L 2 104.812 123.689 114.407 1.00 1.00 C
HETATM 5 C LIG L 2 106.038 122.911 114.921 1.00 1.00 C
HETATM 6 O LIG L 2 107.364 123.649 115.179 1.00 1.00 O
HETATM 7 O LIG L 2 105.936 121.396 115.178 1.00 1.00 O
HETATM 8 H LIG L 2 103.728 128.384 115.046 1.00 1.00 H
HETATM 9 H LIG L 2 103.349 127.328 116.331 1.00 1.00 H
HETATM 10 H LIG L 2 104.658 126.448 113.674 1.00 1.00 H
HETATM 11 H LIG L 2 103.870 124.718 116.162 1.00 1.00 H
HETATM 12 H LIG L 2 105.071 124.069 113.441 1.00 1.00 H
HETATM 13 H LIG L 2 104.024 122.966 114.456 1.00 1.00 H
ENDMDL
到目前为止,我编写的代码已经成功地使用包含ENDMDL
的行号上的enumerate()
将每个10S
节附加到一个文件中,但是我需要240个左右的重复文件,而不是一个包含所有编译内容的文件。以下是我到目前为止的情况:
import os
path ="C:\\Users\\Family\\Desktop\\School Junk\\GABA Project\\GABA Structures\\6HUP\\6HUP Entire ECD\\6HUP ECD GABA\\PYTHON COPY OF DockThor 6HUP Entire ECD GABA"
test_file_name = "PYTHON COPY OF DockThor 6HUP Entire ECD GABA DockThor 6HUP Entire ECD GABA R 2.pdb" # this is the file I'm trying to make duplicates of per 10S data section
os.chdir(path)
empty_list = []
end_of_ligand_line_num_list = [0]
pathway_tree = os.walk(path) # os.walk gives a 2D array of all the names directories, sub directories and folders.
missing_array = []
for subdir, dirs, files_in_directory in pathway_tree: # to activates os.walk() you have to have 3 iterator variables
for file_names in files_in_directory: # file_names is the folder of a specific sub directory, in which files are actually contained
if ".pdb" in file_names and "PYTHON COPY OF DockThor 6HUP Entire ECD GABA EntireECDof6HUP.pdb" != file_names:
os.chdir(subdir)
with open(file_names,"r") as input:
list_of_lines = input.readlines()
keyphrase ="ENDMDL"
for Model_line_number, line in enumerate(list_of_lines, 0):
if keyphrase in line:
Model_line_number = int(Model_line_number)
end_of_ligand_line_num_list.append(Model_line_number)
for i in range(0 , len(end_of_ligand_line_num_list) - 1):
empty_list.append(list_of_lines[end_of_ligand_line_num_list[i] : end_of_ligand_line_num_list[i+1] ] )
no_duplicates = []
[no_duplicates.append(d) for d in empty_list if d not in no_duplicates]
for file_lines in no_duplicates:
for chars in file_lines:
with open("PYTHON COPY OF DockThor 6HUP Entire ECD GABA EntireECDof6HUP_COPYFORPYTHONDOCKTHORTEST.pdb","a") as output:
output.write(chars)
print(file_lines)
目前没有回答
相关问题 更多 >
编程相关推荐