我有一个非常基本的问题,但我已经尝试搜索过去的帖子,似乎找不到任何有用的东西。我正在学习Python中的文件i / o。到目前为止我看到的所有教程似乎都跳过了一个步骤,只是假设已经创建了一个文件,只是通过说handleName = open('text.txt', 'r')
之类的东西,但这留下了2个问题没有得到答复:
openfile = open('test_readline', 'r')
时,我收到错误:IOError: [Errno 2] No such file or directory: 'abc'
关于错误,我假设我必须声明路径,但我如何在Python中这样做?
答案 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)
- 我是否必须手动创建文件并命名?
醇>
您是说作为用户,您是否必须使用现有工具来创建文件,然后返回Python来处理它?不,Python拥有创建文件所需的所有工具。正如vks中their answer所解释的那样,您必须使用mode打开该文件,如果该文件不存在,则会创建该文件。您已选择读取('r')模式,如果在您指定的位置没有要读取的文件,它将(正确地)抛出错误,这会将我们带到... < / p>
- 我假设我必须声明路径,但我如何在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
(作为一个例子,这只是一种可行的方式。)