Continui să primesc eroarea atunci când îmi execut codul:
TypeError: object of type ‘_io.TextIOWrapper’ has no len() function
Cum fac să deschid/citiți fișierul și să îl execut prin buclă?
Iată un link către fișierul pe care încerc să îl import: link de descărcare a secvenței de ADN
def mostCommonSubstring():
dna = open("dna.txt", "r")
mink = 4
maxk = 9
count = 0
check = 0
answer = ""
k = mink
while k <= maxk:
for i in range(len(dna)-k+1):
sub = dna[i:i+k]
count = 0
for i in range(len(dna)-k+1):
if dna[i:i+k] == sub:
count = count + 1
if count >= check:
answer = sub
check = count
k=k+1
print(answer)
print(check)
Problema apare din cauza modului în care deschideți fișierul text. ar trebui să adăugați dna = dna.read()
la codul dvs. astfel încât codul dvs. final ar trebui să arate ceva de genul acesta:
def mostCommonSubstring():
dna = open("dna.txt", "r")
dna = dna.read()
mink = 4
maxk = 9
count = 0
check = 0
answer = ""
k = mink
while k <= maxk:
for i in range(len(dna)-k+1):
sub = dna[i:i+k]
count = 0
for i in range(len(dna)-k+1):
if dna[i:i+k] == sub:
count = count + 1
if count >= check:
answer = sub
check = count
k=k+1
print(answer)
print(check)
@tfabiant : Vă sugerez acest script pentru a citi și procesa o secvență ADN. Pentru a rula acest cod, în terminal: python readfasta.py fastafile.fasta
import string, sys
##########I. To Load Fasta File##############
file = open(sys.argv[1])
rfile = file.readline()
seqs = {}
##########II. To Make fasta dictionary####
tnv = ""#temporal name value
while rfile != "":
if ">" in rfile:
tnv = string.strip(rfile)
seqs[tnv] = ""
else:
seqs[tnv] += string.strip(rfile)
rfile = file.readline()
##############III. To Make Counts########
count_what = ["A", "T", "C", "G", "ATG"]
for s in seqs:
name = s
seq = seqs[s]
print s # to print seq name if you have a multifasta file
for cw in count_what:
print cw, seq.count(cw)# to print counts by seq
len(dna)
– > Por JacobIRR.len
. De asemenea, ele nu pot fi feliate/indexate, adică.dna[i:i+k]
va eșua de asemenea – > Por juanpa.arrivillaga.