【问题标题】:How to Fix File Handling Issues in Python 3如何修复 Python 3 中的文件处理问题
【发布时间】:2019-06-09 10:16:33
【问题描述】:

我正在尝试学习 python 3。我正在学习文件处理的练习。我的代码有问题,当我尝试编写文件时,有时它不会生成任何文件,有时会生成文件,但是当我尝试读取它时。它显示空白输出。大多数时候它会给出某种语法错误,而我使用的是基础知识和简单的代码。但有时不是在终端中使用运行,当我点击运行代码时,它会产生输出但仍然在终端上给出错误。

我尝试过使用、使用和随意的方法。我已经在谷歌上查找了这个问题,但我没有得到任何具体的答案。我试图遵循 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

【问题讨论】:

    标签: python-3.x file-handling


    【解决方案1】:

    嘿嘿,挺简单的…… 每当您以写入格式打开文件时,您只能对其进行写入,因此要读取它,您需要关闭它,然后以读取格式重新打开它。

    示例:

    file=open("Example.txt","w")
    file.write("Some text")
    file.close()
    file=open("Example.txt","r")
    text=file.read()
    print(text)
    file.close()
    

    【讨论】:

    • 没必要,我在下面提到了错误和问题。
    • 经过两天的痛苦和谷歌搜索,我找到了 Viswamedha Nalabotu 给出的答案。事实上,事实证明我没有先关闭文件然后再打开它。现在一切正常。
    【解决方案2】:

    @Viswamedha Nalabotu 没必要。你可以读写两者。是的,但使用 close 更好,因为它可能会导致一些问题。这就是引入 with 方法的原因。但正如我之前提到的,VSC 中有一个小错误,我知道该怎么做。

    你可以这样读写:

        f=open("note.txt",'w+')
        f.write("is it working still ?")
        f.seek(0)
        content=f.read()
        print (content)
    

    【讨论】:

      【解决方案3】:
      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++流容易。

      【讨论】:

      • 你能用简单的方法解释一下吗?在 python 中写入和读取文件的可能正确方法是什么。我目前正在学习它。我要简单有效的方法,不要把事情复杂化。我只是在寻找使用简单和基本方法进行文件处理的正确方法。
      • 这是开始学习的最佳代码。每个操作定义了不同的函数,你需要学习每个操作而不仅仅是读写。
      【解决方案4】:
      file=open('word.txt','rw+')
      file.write("Python you are making me mad")
      file.read()
      

      【讨论】:

      • Traceback(最近一次调用最后):文件“c:\Users\ishfa\Documents\Python 3 VSC\.vscode\IO.py”,第 1 行,在 f=open( 'note.txt','rw+') ValueError: 必须恰好是创建/读取/写入/追加模式之一
      【解决方案5】:

      好的,经过搜索和尝试,我终于明白了。首先,这是 Visual Studio 代码中的一个错误。每当发生这种情况时,您都需要在终端中使用 exit()。其次,您需要在打印之前使用 seek(0),这样我分享的简单程序就可以正常运行。

      【讨论】:

        猜你喜欢
        • 2020-06-01
        • 1970-01-01
        • 2011-08-24
        • 1970-01-01
        • 1970-01-01
        • 2017-01-29
        • 1970-01-01
        • 2021-08-14
        • 1970-01-01
        相关资源
        最近更新 更多