2012-08-03 141 views
-2

嘿,我知道这已被问了几次,但我写了我自己的代码,但它不工作,我不明白为什么。这是我的代码如何从python中的文件中删除特定行

def fixfiles(): 
    inputfilehandle = open("C:/allCHP1seq.txt","r") 
    outputf=open("chp1seqs.txt","w") 
    lines = inputfilehandle.readlines() 
    for line in lines: 
     if "c:\users" not in line: 
      outputf.write(line) 

这里是从文件数据的一个例子,那里有基本上的这些279在该文件中,由2行分隔。但每一个都是独一无二的,我需要做的就是在指定目录的开始处摆脱位。

c:\users\gary\desktop\sequences for chp1\14-3 1076.txt 
>fig|6666666.13395.peg.1076 
atgatcaaagaaaccgaaaaaccgccaaccaccctctttaccgtcgtccc 
cgacacccctaccgaaaccctgctgatcaacagctacgaaaccgtgtgtt 
ccgtcagcaccctgctgctcgacttgtccgaagacctcaccggcaaacac 
cgcgatatcgccttggccattcatcagttgagcgaactgagcgtcctgct 
ggtgggcaaagccatggaccagcacacaccccgctgctga 

我真的不明白我要去哪里错了/ Help!

+1

在这里工作很好。请说明什么是无效的。 – 2012-08-03 15:32:57

+0

实际上究竟把什么东西放进这个文件? (除了在完成时没有关闭文件以外,我无法找到与您的代码有关的问题)。 – mgilson 2012-08-03 15:33:00

+0

它是如何失败?该文件名中的斜杠是否需要是(n转义的)反斜杠? (即“C:\\ allCHP1seq.txt”) – John 2012-08-03 15:33:14

回答

2

我想你应该逃脱你\:中"c:\\users"代替"c:\users"

0

只要把它们分开。这不是测试每行更有效,尤其是当你知道这个问题只与最上面两行:

def fixfiles(): 
    inputfilehandle = open("C:/allCHP1seq.txt","r") 
    outputf=open("chp1seqs.txt","w") 
    lines = inputfilehandle.readlines()[2:] 
    for line in lines: 
     outputf.write(line) 
3

你真的应该写:

if r"c:\users" not in line: 
1

你确实需要escape your backslash。为了好玩,这是一个单线解决方案: open("chp1seqs.txt","w").writelines(filter(lambda line: "c:\\users" in line, open("C:/allCHP1seq.txt","r").readlines()))

相关问题