Как исправить проблемы с обработкой файлов в Python 3 - PullRequest
0 голосов
/ 09 июня 2019

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

Я пытался сделать это с, с и случайным методом. Я посмотрел на Google для решения этой проблемы, но я не получил никакого конкретного ответа. Я пытался следовать документации Python и их код.

Я пробовал открыть как методом, так и случайным методом, но я все еще сталкиваюсь с этой проблемой.

  ```
  with open('text.txt','w+')as f:
      f.write("Hell Men")
  with open('text.txt','r+')as f:
      print(f.read())
```

Также попробовал это так:

file=open('word.txt','w')
file.write("Python you are making me mad")
file.read()

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

Error: invalid syntax

Ответы [ 5 ]

1 голос
/ 09 июня 2019

Хе-хе, это довольно просто ... всякий раз, когда вы открываете файл в формате записи, вы можете только записать его, поэтому для его чтения необходимо закрыть его, а затем снова открыть его в формате чтения.

пример:

file=open("Example.txt","w")
file.write("Some text")
file.close()
file=open("Example.txt","r")
text=file.read()
print(text)
file.close()
0 голосов
/ 18 июня 2019

@ Вишвамедха Налаботу Не обязательно. Вы можете читать и писать оба. Да, но лучше использовать close, поскольку это может вызвать некоторые проблемы. Вот почему был введен метод with. Но, как я упоминал ранее, в VSC была небольшая ошибка, и я понял, как это сделать.

Вы можете читать и писать так:

    f=open("note.txt",'w+')
    f.write("is it working still ?")
    f.seek(0)
    content=f.read()
    print (content)
0 голосов
/ 09 июня 2019
file=open('word.txt','rw+')
file.write("Python you are making me mad")
file.read()
0 голосов
/ 09 июня 2019

Хорошо, после поиска и попытки, наконец, я понял.Прежде всего, это была ошибка в коде Visual Studio.Вы должны использовать exit () в терминале всякий раз, когда происходит такой случай.Во-вторых, перед печатью необходимо использовать seek (0), поэтому простая программа, которой я поделился, будет работать нормально.

0 голосов
/ 09 июня 2019
import sys
import os
import shutil

def leave():
    sys.exit("You are leaving CUI Text Editor")


def read():
    try:
        filename = input("Enter file name: ")
        target = open(filename, "r")
        readfile = target.read()
        print(readfile)
    except Exception as e:
        print("There was a problem: %s" % (e))


def delete():
    filename = input("Enter file name: ")
    try:
        os.unlink(filename)
    except Exception as e:
        print("There was a problem: %s" % (e))


def write():
    try:
        filename = input("Enter file name: ")
        target = open(filename, "a")
        while True:
            append = input()
            target.write(append)
            target.write("\n")
            if append.lower() == "menu":
                break
    except Exception as e:
        print("There was a problem: %s" % (e))


def cwd():
    try:
        print(os.getcwd())
        change = input("Change Y/N: ")
        if change.startswith("y"):
            path = input("New CWD: ")
            os.chdir(path)
    except Exception as e:
        print("There was a problem: %s" % (e))


def rename():
    try:
        filename = input("Enter current file name: ")
        new = input("Enter new file name: ")
        shutil.move(filename, new)
    except Exception as e:
        print("There was a problem: %s" % (e))


while True:
    print("Options: write, read, cwd, exit, delete, rename")
    do = input("So, what are you wishing for today: ")
    if do.lower() == "write":
        write()
    elif do.lower() == "read":
        read()
    elif do.lower() == "delete":
        delete()
    elif do.lower() == "exit":
        leave()
    elif do.lower() == "cwd":
        cwd()
    elif do.lower() == "rename":
        rename()

Получите мой совет, используйте режим r + в целях безопасности и используйте столько блоков try catch, сколько пожелаете.управление файлами в python проще, чем потоки c ++.

...