【问题标题】:How do I create and open files through Python?如何通过 Python 创建和打开文件?
【发布时间】:2015-08-17 20:45:03
【问题描述】:

我有一个非常基本的问题,但我尝试搜索过去的帖子,但似乎找不到任何可以提供帮助的东西。我正在学习 Python 中的文件 i/o。到目前为止,我看到的所有教程似乎都跳过了一个步骤,只是假设一个文件已经创建,只是说handleName = open('text.txt', 'r') 之类的东西,但这给我留下了两个问题:

  1. 我必须手动创建文件并命名吗?我使用的是 Mac,所以我是否必须转到应用程序,打开 TextEdit,创建并保存文件,或者我可以通过 IDLE 中的某些命令来执行此操作吗?
  2. 我尝试手动创建文件(如上所述),但是当我尝试输入openfile = open('test_readline', 'r') 时,出现错误:IOError: [Errno 2] No such file or directory: 'abc'

关于错误,我假设我必须声明路径,但我该如何在 Python 中这样做?

【问题讨论】:

标签: python file python-2.7 io


【解决方案1】:
openfile = open('test_readline', 'w')

                                  ^^

如果文件尚不存在,以write 模式打开将创建该文件。现在您可以写入它并关闭文件指针,它将被保存。

【讨论】:

    【解决方案2】:

    要能够读取任何文件,该文件必须存在。对吗?现在看这里,文件 I/O 的语法如下所示:

    fp = open('file_name', mode) # fp is a file object
    

    第二个参数,即模式描述了文件的使用方式。 w 模式将打开任何现有文件(如果存在),其名称与第一个参数中给出的名称相同。否则,它会创建一个同名的新文件。此外,如果您在 Windows 上并希望以二进制模式打开文件,则将 b 附加到该模式。例如。要以二进制模式打开文件以写入,请使用wb。请注意,如果您尝试以w(写入)模式打开任何现有文件,则将删除具有相同名称的现有文件。如果您想写入现有文件而不擦除旧数据,请使用a 模式。它将新数据添加到前一个文件的末尾。

    fw = open('file_name','w')
    fa = open('file_name','a') # append mode 
    

    要了解详细信息,您可以参考文档: Python File I/O。 我希望这会有所帮助!

    【讨论】:

      【解决方案3】:

      Python 会自动使用默认路径。

      import os
      default_path = os.getcwd()          ## Returns the default path
      new_path = "C:\\project\\"          ## Path directory
      os.chdir(path)                      ## Changes the current directory
      

      更改路径后,您写入和读取的文件将位于 C:\project 中。如果您尝试阅读其他地方的项目,该程序将失败。

      os.chdir 是您在 python 中声明或设置路径的方式。

      【讨论】:

      • 我的帖子应该详细说明两位关于 os.path 的最后一句话。
      • 应该是new_path = "C:\\project\\" 我试图编辑代码,但是太短了,无法发布。
      • 谢谢扫罗。以前不使用双 \\ 把我搞砸了。
      【解决方案4】:
      1. 我必须手动创建文件并命名吗?

      您的意思是作为用户,您必须使用现有工具创建文件,然后返回 Python 进行处理吗?没有。Python 拥有创建文件所需的所有工具。正如vkstheir answer 中已经解释的那样,您必须使用mode 打开文件,如果文件不存在,它将创建该文件。您选择了 read ('r') 模式,如果在您指定的位置没有要读取的文件,它将(正确地)抛出错误,这使我们...

      1. 我假设我必须声明路径,但如何在 Python 中这样做?

      如果你不这样做(如果你说,例如,“filename.txt”),Python 将在其当前工作目录中查找。默认情况下,这是调用 Python 解释器时 shell 的当前工作目录。这几乎总是正确的,除非某些程序有 changed 它,这是不寻常的。要指定路径,您可以像对文件名一样对其进行硬编码:

      open('/full/path/to/filename.txt')
      

      或者您可以使用os.path 模块构建它。


      例子:

      我创建了一个空目录并在其中打开了 Python 解释器。

      >>> with open('test.txt'): pass
      ... 
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      IOError: [Errno 2] No such file or directory: 'test.txt'
      >>> with open('test.txt', 'w'): pass
      ... 
      >>> 
      

      如前所述,读取模式(默认)会出错,因为没有文件。写模式为我们创建了一个没有任何内容的文件。现在我们可以在目录中看到文件,并且可以使用读取模式打开:

      >>> os.listdir(os.getcwd())
      ['test.txt']
      >>> with open('test.txt'): pass
      ... 
      >>> # ^ No IOError because it exists now
      

      现在我创建一个名为“subdir”的子目录并将文本文件移到其中。我是在命令行上完成的,但可以在 Python 中轻松完成:

      >>> with open('test.txt'): pass
      ... 
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      IOError: [Errno 2] No such file or directory: 'test.txt'
      >>> with open('subdir/test.txt'): pass
      ... 
      

      现在我们必须指定(至少)打开文件的相对路径,就像在命令行中一样。在这里,我“硬编码”了它,但它可以很容易地使用 os 模块“构建”:

      >>> with open(os.path.join(os.getcwd(), 'subdir', 'test.txt')): pass
      

      (作为示例,这只是一种方法。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-22
        • 2012-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-30
        相关资源
        最近更新 更多