TypeError: must be string without null bytes, not str

I'm trying to run this code, to run the same command (with little changes) with every frame that I have:

traj.reset()
import os
#os.chdir(outname)
for i, frame in enumerate(traj):
    frame.superpose()
    comando = "python hollow.py -c constraint -o hollow_%s.pdb urei%s.pdb" % (i, i)
    os.system(comando)
    pml_cmd = "pymol urei%s.pdb hollow_%s.pdb -c -d 'as cartoon, urei%s;color gray90, urei%s;center chain A;set_view (-0.605158150,0.089404292,0.791067421,.795849979,0.093013920,0.598304033,-0.020089993,0.991641700,-0.127439827,.000000000,0.000000000,-202.017959595,-28.771762848,-7.683309555,10.745590210,-568.485290527,972.520690918,-20.000000000);bg white;as sphere, hollow_%s;color cyan, hollow_%s;ray;save urei%s.png' " % (i, i, i, i, i, i, i)
    os.system(pml_cmd)
    #remove = "rm urei%s.pdb hollow_%s.pdb" % (i, i)
    #os.system(remove)
os.chdir("../")

I run this and I get this error:


TypeError                                 Traceback (most recent call last)
<ipython-input-8-53cd3e7bd107> in <module>()
      7     os.system(comando)
          8     pml_cmd = "pymol urei%s.pdb hollow_%s.pdb -c -d 'as cartoon, urei%s;color gray90, urei%s;center chain A;set_view (-0.605158150,0.089404292,0.791067421,.795849979,0.093013920,0.598304033,-0.020089993,0.991641700,-0.127439827,.000000000,0.000000000,-202.017959595,-28.771762848,-7.683309555,10.745590210,-568.485290527,972.520690918,-20.000000000);bg white;as sphere, hollow_%s;color cyan, hollow_%s;ray;save urei%s.png' " % (i, i, i, i, i, i, i)
----> 9     os.system(pml_cmd)
     10     #remove = "rm urei%s.pdb hollow_%s.pdb" % (i, i)
     11     #os.system(remove)

TypeError: must be string without null bytes, not str

I searched in internet, but I can't find a good answer.


The problem is with the char that should either be double escaped, ie changed to "" Or alternatively add an "r" before the string decleration:

pml_cmd = r"pymol urei%s.pdb ..."

You get this particular error since somewhere along the string there is a which is interpreted as a NULL char


I was able to resolve this error by commenting out the print :

for tarfileobj in inputs:
    # print(tarfileobj)
    tarfileobj.extractall(path=t, members=None)

I could have done print(tarfileobj.split) or printed the repr or removed null bytes, or if its a tarfile, just extract it.

链接地址: http://www.djcxy.com/p/15286.html

上一篇: Postgres数组可以重叠(&&)运算符使用索引吗?

下一篇: TypeError:必须是没有空字节的字符串,不是str