Python 为什么在我的代码中放入.read()会导致它无法工作?
我的代码如下:Python 为什么在我的代码中放入.read()会导致它无法工作?,python,file,Python,File,我的代码如下: input_seq = open("input.txt") sequences = input_seq.read() output = open("output.txt", "w") for dna in input_seq: trimmed = dna[14:] length = len(trimmed) output.write(trimmed) print("processed sequence with length " + str(le
input_seq = open("input.txt")
sequences = input_seq.read()
output = open("output.txt", "w")
for dna in input_seq:
trimmed = dna[14:]
length = len(trimmed)
output.write(trimmed)
print("processed sequence with length " + str(length))
我的问题是关于第二行“sequences=input_seq.read()”。当我在代码中包含它时,它无法正确执行。当我删除它时,代码可以完美地运行
为什么.read()行会导致整个程序无法正常运行
输入是
ATTCGATTATAAGCTCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATC
ATTCGATTATAAGCACTGATCGATCGATCGATCGATCGATGCTATCGTCGT
ATTCGATTATAAGCATCGATCACGATCTATCGTACGTATGCATATCGATATCGATCGTAGTC
ATTCGATTATAAGCACTATCGATGATCTAGCTACGATCGTAGCTGTA
ATTCGATTATAAGCACTAGCTAGTCTCGATGCATGATCAGCTTAGCTGATGATGCTATGCA
正确的输出是
TCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATC
ACTGATCGATCGATCGATCGATCGATGCTATCGTCGT
ATCGATCACGATCTATCGTACGTATGCATATCGATATCGATCGTAGTC
ACTATCGATGATCTAGCTACGATCGTAGCTGTA
ACTAGCTAGTCTCGATGCATGATCAGCTTAGCTGATGATGCTATGCA
基本上,目的是删除input.txt文件中所有行共有的前14个字符
当我执行它时没有错误消息,但实际上什么也没有发生。output.txt文件仍为空。将与open()一起使用作为
,不要使用open()
以Python读取或写入文件。您可以搜索其他问题以了解更多有关此的信息
我对您的代码进行了一些修改,并对其进行了测试,结果是正确的:
sequences = None
with open('input.txt', 'r') as input_file:
sequences = input_file.readlines()
with open('output.txt', 'w') as output_file:
for dna in sequences:
output_file.write(dna[14:])
print("processed sequence with length ", len(dna[14:]))
如注释中所述,
sequences=input_seq.read()
读取变量中的所有文件内容,此语句之后的input_seq
指向文件的末尾。您可以使用这两个选项中的任何一个,但不能同时使用这两个选项。
第一选择
with open('input.txt') as inp_seq, open('output.txt', 'w') as output:
for dna in input_seq:
trimmed = dna[14:]
output.write(trimmed)
print("processed sequence with length " + str(len(trimmed)))
第二个选项-首先读取变量中的所有输入文件
with open('input.txt') as inp_seq:
sequence = inp_seq.read()
with open('output.txt', 'w') as output:
for dna in sequence:
trimmed = dna[14:]
output.write(trimmed)
print("processed sequence with length " + str(len(trimmed)))
“失败”是什么意思?您是否收到错误消息或错误结果-始终对完整的错误消息提出疑问。和示例数据、错误结果和预期结果。您还可以删除整行,因为
序列
不用于任何内容。使用read()时
然后您读取变量序列的所有内容
,之后的input_seq
位于文件末尾,没有任何内容可读取-可能对序列中的dna使用:
我理解序列。read()在这种情况下是多余的。我通常是习惯性地把它加进去的,这是第一次给我带来麻烦。PS:这是我第一次尝试python!用户29578:忘掉它。在Python中,通常不需要使用read()
方法。对open_文件中的行使用:
来处理文件中以换行符结尾的字符数据行。这很好,但不能回答OP的问题。