2012-08-03 156 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()))

相關問題