- 我必须手动创建文件并命名吗?
您的意思是作为用户,您必须使用现有工具创建文件,然后返回 Python 进行处理吗?没有。Python 拥有创建文件所需的所有工具。正如vks 在their answer 中已经解释的那样,您必须使用mode 打开文件,如果文件不存在,它将创建该文件。您选择了 read ('r') 模式,如果在您指定的位置没有要读取的文件,它将(正确地)抛出错误,这使我们...
- 我假设我必须声明路径,但如何在 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
(作为示例,这只是一种方法。)