2015-09-03 4 views
-2

Я пытаюсь написать скрипт, который удаляет строки, содержащие одну строку, и сохраняет строки, содержащие другой. Я думаю, что у меня ошибка с отступом в конце, может ли кто-нибудь понять, как это исправить?Python: создайте файл, который содержит определенную строку и не содержит другую конкретную строку.

import os 
import sys 

#Reading Input file 
f = open(sys.argv[1]).readlines() 

for line in f: #(read line 0 to last line of input file) 
if 'Futures' in line and 'Elec' not in line: #if string "Futures" is not there in dictionary i.e it is unique so store it into a dictionary 
#f = open("C://Python27//New_File.csv", 'w') 
#f.close() 
#opens and close new file 
nf = open("C://Python27//New_File.csv", "w") 
nf.write(data) 
nf.close() 
+3

«Я думаю, что у меня ошибка с отступом в конце». Да, я согласен. Ошибка в том, что у вас вообще нет отступов. – Kevin

+0

У вас есть несколько вариантов, вы также будете полностью перезаписывать каждый раз при открытии с помощью 'w' –

ответ

-1

Попробуйте это:

for line in f: 
    if 'Futures' in line and 'Elec' not in line: 
     nf = open("C://Python27//New_File.csv", "a") 
     nf.write(data) 
     nf.close() 
+0

Спасибо всем за их вклад, просто слегка двигаясь от этого, можно ли проверить, существует ли определенное значение в одном указанном столбце? –

+0

Вы имеете в виду 1 символ в 1 колонке? –

+0

Hi Anthony, no Я имею в виду 1 строку, например, появляющуюся в определенном поле столбца, а не проверку всей строки. –

0

Ваш отступов и логика оба не правы, если вы держите отверстие с w вы будете в конечном итоге с одной строки, вам необходимо открыть выходной файл один раз вне петли и писать, как вы идете:

import sys 

#Reading Input file 
with open(sys.argv[1]) as f, open("C://Python27//New_File.csv", "w") as out: 
    for line in f: #(read line 0 to last line of input file) 
     if 'Futures' in line and 'Elec' not in line: #if string "Futures" is not there in dictionary i.e it is unique so store it into a dictionary 
      out.write(line) 

вы также можете перемещаться по объекту файла, нет необходимости или причины использовать readlines, если вы на самом деле не нужен список строк.

С другой стороны, вы можете обращаться с случаями передачи файла, который не существует, или у вас нет прав для чтения.

Смежные вопросы