Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么在我的代码中放入.read()会导致它无法工作?_Python_File - Fatal编程技术网

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的问题。