操作文件
以文本的方式去写(字符串),以二进制的方式去写(字节)。
open命令
文本读取与复制
```python
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
参数:
file: 文件(路径+文件名)
mode: 打开文件的方式
mode选项:
'r' open for reading (default)
以读的方式打开(默认的)
'w' open for writing, truncating the file first
以写的方式打开,先清空文件的内容
'x' create a new file and open it for writing
创建一个新的文件并以写的方式打开
'a' open for writing, appending to the end of the file if it exists
a: append, 以追加的方式去写
'b' binary mode
二进制
't' text mode (default)
文本(默认)
'+' open a disk file for updating (reading and writing)
打开去更新(读和写)一个磁盘文件
default: 意味着是它默认的打开方式,所以可以不用写
注意:打开一个文件,如果操作完成后,记得一定要关闭文件流。
buffering: 缓存
encoding: 编码
errors: 错误处理的方式
newline: 新行
closefd: close file descriptor: 关闭文件描述符
注意:在这里我们每次打开文件,会返回一个文件流,所以我们真正操作的时流对象。
文本方式读取文件例子:这里我们可以手在pycharm添加一个名为file.txt文本文件,内容为"人生苦短,回头时python"
以文本的方式去读的时候:
read(n): n代表的就是读取3个字符(默认情况:n = -1, 意味着读取文件中的所有字符)
readline(n): 读取一行内容 readline(n) n = -1 默认读取一行
readlines: 读取多行
readlines(hint): 默认情况: hint=-1, 读取所有行返回的是一个列表,列表中的每一个元素,代表一行hint: 读取hint个字符所在的行.able: callable, readableable 认为就是是否它具备了一种能力
file_obj.readable() # 返回值是True或者False
file.txt.join(list_data)通过定义数组,达到数组内每个元素在文本中换行输入操作。
输入:
sun_obj = open("file.txt", 'rt', encoding="utf-8")
sun_txt = sun_obj.read()
sun_obj.close() #注意对于文件流的关闭
print(sun_txt)
结果:
“人生苦短,回头是python”
文本方式写文件例子:
sun_obj = open("file1.txt", 'w', encoding="utf-8")
sun_txt = sun_obj.write("人生苦短,回头是python") #这里我们注意,当文件存在时,会自动创造文件。当文件存在时,会覆盖文件内容。
sun_obj.close()
print(sun_txt)
结果:
人生苦短,回头是python。
'''''
图片复制
输入:file_obj = open("1.jpg", "rb")
data = file_obj.read()
file_obj.close()
print(data)
print(type(data))
file_obj = open("2.jpg", 'wb')
date = file_obj.write(data)
file_obj.close()
print(data)
结果: