我对编程非常陌生,但现在我需要它来完成一个项目,所以我在“sos”中学习了一些python课程。首先:对不起我的英语,虽然我希望你能理解我。你知道吗
所以我的任务之一是我有许多文件,其中包含以下内容:一个蛋白质(大约前56行),和几个以这样开头的块:“HEADER crosscluster.^^.^.pdb” 我必须选择那些在.pdb前面的“^^^”大于016的(我想我可以做这部分)。然后我要把蛋白质和其中一个选定的区块复制到一个新的文件中,对每个选定的区块都这样做。所以一个文件应该只包含蛋白质,1个块以“HEADER crosscluster.开头。.pdb”。你知道吗
我没有收到任何错误信息,只是什么都没发生。你知道吗
所以。。。脚本(:$):
#!/usr/bin/python
import os
import sys
import re
def split_file(phrase1, phrase2, my_file):
n = 1
my_list = []
for phrase1, phrase2 in my_file.readlines():
if not re.search(r"(.*)(.pdb)", line):
my_list.append(line)
with open("output"+str(n)+".pdb","w") as out_file:
for item in my_list:
out_file.write(item)
else:
if my_list:
my_list = []
n += 1
my_file.close()
out_file.close()
for dirname, dirnames, filenames in os.walk("/home/georgina/FTmaperedmenyek"):
for filename in filenames:
full_name = str(os.path.join(dirname, filename))
if filename.endswith(".pdb"):
searching = open(full_name, "r")
for line in searching:
pld = "HEADER crosscluster.***.***.pdb"
protein = "HEADER protein"
if pld in line and int(pld[24:27]) > int(016):
split_file(protein, pld, searching)
如果您的代码没有出现任何错误,则表示根本没有调用函数-
split_file()
,这是因为-在Python2.x中,当用0作为数字的前缀时,将其定义为八进制数。示例-
14
是八进制数的十进制表示形式0o16
。你知道吗你需要做-
其次,我不认为这会起作用-
for phrase1, phrase2 in my_file.readlines():
-如果有多于或少于2行,这将抛出错误。你知道吗在函数内部迭代时,不建议使用
.readline()
。为什么?检查这个问题-Python:Why readline() function doesn't work for file looping您应该再次遍历该文件,而不是使用
.readlines()
。你应该-相关问题 更多 >
编程相关推荐