2015-02-28 8 views
0

Я пытаюсь сделать программу на python, которая редактирует файлы в текущем каталоге и добавляет код в конце программы. Я еще не закончил его, но я поместил маркер для вируса в другие файлы и начал программу, чтобы проверить, находится ли маркер в другом коде и он всегда возвращает false. Не уверен, почему он это делает.Python Appender для файлов в каталоге

import os 

path = ("/python34") 
def infected(__file__): 
    if("#@! infected by virus ;) [email protected]#") in (__file__): 
     print("True.") 
    else: 
     print("False.") 

def selectTarget(): 
    os.getcwd() 
    os.listdir(path) 

def copyCode(__file__): 
    open(__file__, 'r+') 
    victimfile=open(__file__) 

selectTarget() 
infected(__file__) 
copyCode(__file__) 

ответ

0

Единственная причина, это не вызывает ошибки в том, что вы выбрали встроенную команду в переменной (__file__) для использования в качестве параметра для ваших функций. Вы не должны использовать встроенные имена по многим причинам, но здесь проблема заключается в том, что он маскирует реальные ошибки.

Итак, измените __file__ на filename, и вы начнете поражать множество ошибок. Например, его никогда не определяли. И после того, как вы это определите, вы обнаружите, что ваши функции не возвращают ничего, поэтому все, что они рассчитывают, отбрасывается, как только они выходят.

Я думаю, вам следует пройти через учебник python, прежде чем принимать эту более сложную задачу! Вы сэкономите много путаницы.

0

Это может сработать. Я принял предложения «tdelaney» и отредактировал исходный код. Надеюсь, это поможет, если кто-то изменит его, сделайте это лучше.

import os 

filename = raw_input("File Name: ") # Type whatever your file is 
path = ("/python34") 
def infected(filename): 
    if("#@! infected by virus ;) [email protected]#") in (filename): 
     return True 
    else: 
     return False 

def selectTarget(): 
    os.getcwd() 
    path_list = os.listdir(path) 
    return path_list 

def copyCode(filename): 
    open(filename, 'r+') 
    victimfile=open(filename) 
    return victimfile 

for i in selectTarget(): 
    if infected(filename) == True: 
     infected_file = copyCode(filename) 
     # Do something with infected file