Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
将if语句的结果写入python文件_Python_File_Split_Fwrite - Fatal编程技术网

将if语句的结果写入python文件

将if语句的结果写入python文件,python,file,split,fwrite,Python,File,Split,Fwrite,有人能解释一下我做错了什么吗 我有两个文件: 文件1看起来像这样 NOP7 305 CDC24 78 SSA1 41 NOP7 334 LCB5 94 FUS3 183 SSA1 550 S HSP70 1YUW FUS3 181 Y Pkinase 1QMZ FUS3 179 T Pkinase 1QMZ CDC28 18 Y Pkinase 1QMZ 文件2看起来像这样 NOP7 305

有人能解释一下我做错了什么吗

我有两个文件:

文件1看起来像这样

NOP7    305

CDC24   78

SSA1    41

NOP7    334 

LCB5    94

FUS3    183
SSA1    550 S   HSP70   1YUW

FUS3    181 Y   Pkinase 1QMZ

FUS3    179 T   Pkinase 1QMZ

CDC28   18  Y   Pkinase 1QMZ
文件2看起来像这样

NOP7    305

CDC24   78

SSA1    41

NOP7    334 

LCB5    94

FUS3    183
SSA1    550 S   HSP70   1YUW

FUS3    181 Y   Pkinase 1QMZ

FUS3    179 T   Pkinase 1QMZ

CDC28   18  Y   Pkinase 1QMZ
我使用下面的代码从其他文件的列表中获取匹配的蛋白质名称

file = open('file1')

for line in file1:

    line=line.strip().split()

    with open('file2') as file2:

    for l in out:

        l=l.strip().split()

            if line[0]==l[0]:

                take=line[0]

                    with open('file3', 'w') as file3:

                        file3.write("{}".format(take))
我得到的是一个只有一个蛋白质名称的文件

CDC28
我想要的是所有匹配的蛋白质,例如

SSA1

CDC28

FUS3
请引导


PS:当我打印结果时,我会打印出所需的值,但我无法将其写入文件。

您遇到的问题是,filefname,'w'在尝试写入文件之前先截断文件,这意味着每次命中,您都会丢失以前的结果。您要做的是使用filefname,'a',它附加到文件的末尾。但是,您需要知道,默认情况下,这不会插入尾随换行符,因此您必须手动执行此操作,例如。G在格式字符串中使用\n,如:{}\n.formattake

此外,如果您使用的是Python 3,您可能希望将嵌套的with语句更改为具有以下内容的单个语句:

with file1 as open('file1', 'r'), file2 as open('file2', 'r'),\
     file3 as open('file3', 'a'):
     #put code here ...

请注意,这是为数不多的几个需要反斜杠以防止行过长的地方之一,而PEP8中建议的换行括号也不起作用,因为with语句会假定元组是我们的上下文管理器。

CDC28不在文件1中,为什么它会出现在输出中?非常感谢,它现在可以正常工作了。干杯我正在使用Python2.7,有没有关于如何使用'with'语句一次打开多个文件的建议?我并没有真正检查它,但根据文档和我的机器上现在可以在2.7.11上运行的事实来看,2.7中实际上包含了多个with语句。但是,在2.6上,您必须使用contextlib.nested,如本问题所示: