2016-02-19 2 views
1

Я пытаюсь создать очень простую функцию, которая позволит мне редактировать файл, который я уже написал, используя Python 3.5. Моя функция записи работает нормально, но я включаю ее на всякий случай. Это выглядит следующим образом:Как создать функцию, которая позволит мне редактировать .txt-файл в python?

def typer(): 
    print("") 
    print("Start typing to begin.") 
    typercommand = input(" ") 
    saveAs = input("Save file as: ") 
    with open(saveAs, 'w') as f: 
     f.write(typercommand) 
    if saveAs == (""): 
     commandLine() 
    commandLine() 

Моя функция редактирования выглядит следующим образом:

def edit(): 
    file = input("Which file do you want to edit? ") 
    with open(file, 'a') as f: 
     for line in f: 
      print(line) 

Я затем вызвать функцию, используя мою командную функцию строку:

def commandLine(): 
    command = input("~$: ") 
    if command == ("edit"): 
     edit() 

Я не получить какие-либо ошибки, но ничего другого не происходит, либо (я просто перенаправлен в базовую командную строку). И под этим я подразумеваю, что я вызываю функцию, а затем, прямо в строке под ней, она получает приглашение для командной строки, которую я сделал для программы (~ $). Что не так с моим кодом и что я могу сделать, чтобы исправить это?

+1

какая ошибка вы получаете? – Nilesh

+3

В вашей функции 'edit()' вы открываете файл для записи, но попробуйте прочитать его. Я удивлен, что это не дает ошибки. – e0k

+1

Насколько мы ничего не имеем в виду? Получаете ли вы приглашения, например «Начать ввод, чтобы начать»? Есть ли какой-либо вывод после попытки его запуска? –

ответ

0

Если вы хотите читать и писать в файл, вам необходимо открыть его в режиме 'r+', 'w+' или 'a+'. Обратите внимание, что 'w+' обрезает файл, так что вам, возможно, понадобится 'r+' или 'a+' см doc

Что-то вроде:

def edit(): 
    file = input("Which file do you want to edit? ") 
    with open(file, 'r+') as f: 
     for line in f: 
      print(line) 

     # here you can write to file 
     ... 

Редакцией: ошибка отступы

+0

спасибо @Steve, я исправил его – Pedru

0

В функции редактирования, вы всего лишь printing на стандартном выходе каждая строка, но вы нет запись все.

def edit(): 

    file = input("Which file do you want to edit? ") 
    with open(file, 'w+') as f: 
     filetext = "" 
     for line in f: 
      filetext += line 

     # do stuff with filetext 
     ... 

     # then write the file 
     f.write(filetext) 
Смежные вопросы