如何通过Python创建和打开文件?

时间:2015-08-17 20:45:03

标签: python file python-2.7 io

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

  1. 我是否必须手动创建文件并命名?我正在使用Mac,所以我必须转到应用程序,打开TextEdit,创建并保存文件,还是可以通过IDLE中的某个命令来执行此操作?
  2. 我尝试手动创建文件(如上所述),但是当我尝试输入openfile = open('test_readline', 'r')时,我收到错误:IOError: [Errno 2] No such file or directory: 'abc'
  3. 关于错误,我假设我必须声明路径,但我如何在Python中这样做?

4 个答案:

答案 0 :(得分:4)

openfile = open('test_readline', 'w')

                                  ^^

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

答案 1 :(得分: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。 我希望这有帮助!

答案 2 :(得分:1)

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中声明或设置路径的方式。

答案 3 :(得分:0)

  
      
  1. 我是否必须手动创建文件并命名?
  2.   

您是说作为用户,您是否必须使用现有工具来创建文件,然后返回Python来处理它?不,Python拥有创建文件所需的所有工具。正如vkstheir answer所解释的那样,您必须使用mode打开该文件,如果该文件不存在,则会创建该文件。您已选择读取('r')模式,如果在您指定的位置没有要读取的文件,它将(正确地)抛出错误,这会将我们带到... < / p>

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

如果不这样做(如果你说,例如“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

(作为一个例子,这只是一种可行的方式。)