本博客分享在python中,文件的基本操作,如果读者对操作系统有了解,那会对文件操作有更加深刻的理解,但是本篇博客尽量避开操作系统的知识
我把本博客分成三个大部分:
①python文件的读写,主要是关于.txt格式的文件
②imageio,skimage.io,PIL,主要是关于图像的读写
③os包的一些读写操作
上述三个大部分是我在读别人写的代码时经常看到的,在这里总结总结。
先介绍常用的函数和方法,最后总结一下对文件的操作模式。
f = open(name,mode) # return a Stream object f
该函数返回一个数据流对象对于对该文件进行读写操作
name:是要打开的目标文件名的字符串(可以包含文件所在的具体路路径)。
mode:设置打开⽂件的模式(访问模式):只读、写入、追加等
流对象.read(num)
num表示要从⽂件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据
f = open('test.txt')
content = f.readlines()
print(content) # ['hello world\n', 'abcdefg\n', 'aaa\n', 'bbb\n', 'ccc']
# 关闭⽂文件 f.close()
f = open('test.txt')
content = f.readline()
print(f'第⼀行:{content}')
content = f.readline()
print(f'第⼆行:{content}')
# 关闭⽂文件
f.close()
文件对象.write('内容')
# 1. 打开⽂文件
f = open('test.txt', 'w')
# 2.⽂文件写⼊入
f.write('hello world')
# 3. 关闭⽂文件
f.close()
文件对象.close()
下面总结一下函数open(name,mode)中参数mode的种类
⽂件对象.seek(偏移量量, 起始位置)
偏移量:移动的步长
起始位置:
0:文件开头
1:当前位置
2:文件结尾
" / “左倾斜是正斜杠,” \ "右倾斜是反斜杠,可以记为:除号是正斜杠一般来说对于目录分隔符,Unix和Web用正斜杠/,Windows一般用反斜杠,具体如下:
在Python中文件和文件夹的操作要借助os模块里面的相关功能,为什么是os模块,因为操作系统管理着文件系统,文件系统管理着文件(Python3.6以下常用,3.6之后使用pathlib.Path多一点)
import os # 这里导入一次,往后就不再导入了!
os.rename(src,dst)
src:文件当前的路径
dst:要修改成什么样
os.remove(src)
import os
os.mkdir(src)
import os
os.rmdir(src)
os.getcwd()
os.chdir()
import os
os.getcwd() # a路径
os.chdir('b路径')
os.getcwd() # b路径
os.listdir()
os.rename(src,dst)
from skimage import io
img = io.imread('testimg.tif')
import numpy as np
data=np.random.random([100,100])
io.imsave('rand_data.tif',np.float32(data))
import numpy as np
import imageio
from PIL import Image #PIL pakage name is Pillow
img=imageio.imread(r'G:\leopard.jpg')
high,width,ichannel=img.shape
print(type(img))
print(img.shape)
imageio.imwrite(r'G:\leopard_i1.jpg',img)
imageio.imwrite(r'G:\leopard_i2.jpg',np.float32(img/10)) # automatic brightness adjust
imageio.imwrite(r'G:\leopard_i3.jpg',np.uint8(img/10))
im = Image.open(r'G:\leopard.jpg')
print(type(im))
in_data = np.asarray(im, dtype=np.uint8)
print(type(in_data))
print(in_data.shape)
new_im = Image.fromarray(in_data) # np.uint8, or TypeError: Cannot handle this data type
# new_im.show()
new_im.save(r'G:\leopard_p1.jpg')