代码未写入输出文件

时间:2018-10-21 02:07:42

标签: python

import re
import sys
import os
import xmltodict

if len(sys.argv) < 2:
    message = '\n Get 7 TM pdb files from a GPCR PDB. \n\n Usage: '+sys.argv[0] + ' [Input csv file with TM info] \n' + ' Example: ' + sys.argv[0] + '  pdbtms7.csv\n' + ' Output Files: pdb_2rh1A_tm1.pdb ... pdb_2rh1A_tm7.pdb'
    print (message)
    exit()
csvFile=sys.argv[1]
f = open (csvFile,'r')
k = 0
data = f.readlines()
for linedata in data:
    line=linedata.strip()
    letters = line.split(',')
    print (letters)
    pdbId=letters[0]
    chain=letters[1]
    numTMs=int(letters[3])
    for i in range(numTMs):
         j=((2*i)+4)
         k=((2*i)+5)
       #  print(i,j,k)
         print(i+1,letters[j],letters[k])
         dump=  'pdb_'+ pdbId + chain + '_tm' + str(i+1) +'.pdb'
         pdbFile=pdbId+'.pdb'
         wgetcom='wget https://files.rcsb.org/view/'+pdbFile+' -O '+pdbFile
         os.system(wgetcom)
         p = open (pdbFile,'r')
           data =p.readlines()
         g = open(dump,'w')
         for linedata in data:
             line=linedata.strip()
             words = line.split()
             if (words[0]=='ATOM'):
                 words[5]=int(line[22:26].strip())
                 if(words[5] in range(j,k+1)):
                     g.write(linedata)

g.close()
f.close()

该代码应另外创建7个文件作为输出;该代码实际上创建了它们,但没有在文件中写入任何内容,因此有任何方法可以解决此问题。

非常感谢!

1 个答案:

答案 0 :(得分:1)

您正在执行以下两项操作之一,要么是在不执行任何操作的情况下覆盖转储文件,要么是不刷新数据。 我非常怀疑它是否会被覆盖,因为您声明代码正在创建7个单独的文件。但是,我们无权访问您用作输入的cvs文件。 可能的答案是,在创建文件后,没有数据被写入磁盘。这是有关如何执行此操作的示例。

data =p.readlines()
with open(dump,'w') as g:
  for linedata in data:
    line=linedata.strip()
    words = line.split()
    if (words[0]=='ATOM'):
      words[5]=int(line[22:26].strip())
      if(words[5] in range(j,k+1)):
        g.write(linedata)
  g.flush()
  os.fsync()
f.close()