## Python文件写入
保存数据的最简单的方式之一是将其写入到文件中。通过将输出写入文件,即便关闭包含程序输出的终端窗口,这些输出也依然存在:你可以在程序结束运行后查看这些输出,可与别人分享输出文件,还可编写程序来将这些输出读取到内存中并进行处理。
要写入现有文件,必须向`open()`函数添加参数:
`"a"`\-追加-将追加到文件末尾
`"w"`\-写-将覆盖任何现有内容
示例,打开文件“ ”,并将内容附加到该文件:
```
f = open("", "a")
("Now the file has more content!")
()
#open and read the file after the appending:
f = open("", "r")
print(())
```
示例,打开文件“ ”并覆盖内容:
```
f = open("", "w")
("Woops! I have deleted the content!")
()
#open and read the file after the appending:
f = open("", "r")
print(())
```
\*\*注意:\*\*w方法将覆盖整个文件。
*****
## 创建一个新文件
要在Python中创建新文件,请使用`open()`带有以下参数之一的方法:
`"x"`\-创建-将创建文件,如果文件存在则返回错误
`"a"`\-附加-如果指定的文件不存在,将创建一个文件
`"w"`\-写入-如果指定的文件不存在,将创建一个文件
示例,创建一个名为“ ”的文件:
```
f = open("", "x")
```
结果:创建了一个新的空文件!
示例,如果不存在,请创建一个新文件:
```
f = open("", "w")
```
## 写入空文件
要将文本写入文件,你在调用open()时需要提供另一个实参,告诉Python你要写入打开的文件。为明白其中的工作原理,我们来将一条简单的消息存储到文件中,而不是将其打印到屏幕上:
```
write_message.py
filename = ''
with open(filename, 'w') as file_object:
file_object.write("I love programming.")
```
在这个示例中,调用open()时提供了两个实参。第一个实参也是要打开的文件的名称;第二个实参( 'w')告诉Python,我们要以写入模式打开这个文件。打开文件时,可指定读取模式('r')、 写入模式('w')、 附加模式('a')或让你能够读取和写入文件的模式('r+')。如果你省略了模式实参, Python将以默认的只读模式打开文件。
如果你要写入的文件不存在,函数open()将自动创建它。然而,以写入('w')模式打开文件时千万要小心,因为如果指定的文件已经存在, Python将在返回文件对象前清空该文件。
我们使用文件对象的方法write()将一个字符串写入文件。这个程序没有终端输出,但如果你打开文件,将看到其中包含如下一行内容:
```
I love programming.
```
相比于你的计算机中的其他文件,这个文件没有什么不同。你可以打开它、在其中输入新文本、复制其内容、将内容粘贴到其中等。
注意 Python只能将字符串写入文本文件。要将数值数据存储到文本文件中,必须先使用函数str()将其转换为字符串格式。
## 写入多行
函数write()不会在你写入的文本末尾添加换行符,因此如果你写入多行时没有指定换行符,文件看起来可能不是你希望的那样:
```
filename = ''
with open(filename, 'w') as file_object:
file_object.write("I love programming.")
file_object.write("I love creating new games.")
```
如果你打开,将发现两行内容挤在一起:
I love love creating new games.
要让每个字符串都单独占一行,需要在write()语句中包含换行符:
```
filename = ''
with open(filename, 'w') as file_object:
file_object.write("I love programming.\n")
file_object.write("I love creating new games.\n")
```
现在,输出出现在不同行中:
```
I love programming.
I love creating new games.
```
像显示到终端的输出一样,还可以使用空格、制表符和空行来设置这些输出的格式。
## 附加到文件
如果你要给文件添加内容,而不是覆盖原有的内容,可以附加模式打开文件。你以附加模式打开文件时, Python不会在返回文件对象前清空文件,而你写入到文件的行都将添加到文件末尾。如果指定的文件不存在, Python将为你创建一个空文件。
下面来修改write\_message.py,在既有文件中再添加一些你酷爱编程的原因:
```
write_message.py
filename = ''
with open(filename, 'a') as file_object:
file_object.write("I also love finding meaning in large datasets.\n")
file_object.write("I love creating apps that can run in a browser.\n")
```
我们打开文件时指定了实参'a',以便将内容附加到文件末尾,而不是覆盖文件原来的内容。我们又写入了两行,它们被添加到文件末尾:
```
I love programming.
I love creating new games.
I also love finding meaning in large datasets.
I love creating apps that can run in a browser.
```
最终的结果是,文件原来的内容还在,它们后面是我们刚添加的内容。