os.path 模块主要用于文件的属性获取,使用前导入:
import os
官方:os.path — Common pathname manipulations
参考:Python os.path() 模块
============================================
需求1:获取文件路径(dirname)
os.path.dirname(file_path)
返回值: 文件的目录,但不包括文件名
os.path.dirname("D:/data/read/train.txt"))
>>> D:/data/read
其作用相当于 os.path.split(file_path)[0]
============================================
需求2:拼接路径,合并为一个完整的路径(join)
os.path.join()
返回值: 多个路径的连接结果,格式仍然是一个路径
# 连接多个路径名组件
p1 = 'data'
p2 = 'read'
p3 = 'train.txt'
path = os.path.join(p1, p2, p3)
>>> path = 'data\\read\\train.txt'
============================================
需求3:获取当前脚本的绝对路径(abspath)
os.path.abspath(__file__)
这里的 __file__
是当前执行的脚本文件
返回值: 当前脚本的绝对路径
注意: 此时获取的绝对路径是包含脚本文件名在内的,和 os.path.dirname
搭配食用,可以获取当前脚本所在路径
# 获取当前脚本绝对路径(包含脚本名)
os.path.abspath(__file__)
# 获取当前脚本绝对路径(不包含脚本名)
os.path.dirname(os.path,abspath(__file__))
# 获取脚本所在的上一级目录
os.path.dirname(os.path.abspath(__file__)).split('/')[-1]
/
将路径进行切分,然后取最后一个路径段============================================
需求4:判断路径是否为文件(isfile)
os.path.isfile(path)
返回值: True / False
注意: 传入的 path 必须是绝对路径
============================================
需求5:判断文件是否存在(exists)
os.path.exists(path)
返回值: True/False
============================================
需求6:文件重命名 (rename)
#coding=utf-8
import os
path = '/your/path/'
count = 1
for file in os.listdir(path):
os.rename(os.path.join(path,file),os.path.join(path,str(count).zfill(4)+".jpg")
count+=1
这里的 .zfill(4)
用于格式化字符串长度。
需求7:创建文件夹
用 os.path.exits()
判断是否存在目标文件,如果不存在则用 os.makedirs()
进行创建:
import os
isExists = os.path.exists(path)
if not isExists:
os.makedirs(path)
glob 模块可以查找符合特定规则的文件路径名,相当于搜索功能。使用前导入:
import glob
============================================
需求1:查找所有符合条件的文件路径
list = glob.glob('*.py')
匹配出所有后缀为 py
的文件,并将其以 List 的形式返回
============================================
使用前导入:
import csv
参考:
============================================
需求1:读写 csv 文件
with open('DSC.csv', 'r') as csvfile:
reader = csv.reader(csvfile)
for line in reader:
print(line)
>>> help(csv.reader)
打印出来的结果是数组类型,有文件中几行数据就打印几个数组,不区分表头和值
writer = csv.writer(file('data.csv','wb'))
writer.writerow(['Column1','Column2','Column3'])
>>> help(csv.writer)
依赖库安装:
conda install xlrd
conda install xlwt
'''
Excel文件的基本处理
'''
import xlrd
import xlwt
# 打开 Excel文件
workbook = xlrd.open_workbook('info.xlsx')
# 获取文件中的表单名称
name = workbook.sheet_names()
# 通过索引打开表单
sheet1 = workbook.sheet_by_index(0)
# 通过表单名称打卡表单
sheet2 = workbook.sheet_by_name('DSC')
print(sheet1, sheet2) # 可以看出用索引获取和用名称都可以获得目标sheet
# 获取表单行数
nrows1 = sheet1.nrows
nrows2 = sheet2.nrows # nrows1=nrows2
# 获取表单列数
ncols1 = sheet1.ncols
ncols2 = sheet2.ncols # ncols1=nclos2
print(nrows1, ncols1, nrows2, ncols2)
# 按行获取表单内容并保存在矩阵中
Mat = np.zeros((8,30))
for i in range(nrows1):
rows = sheet1.row_values(i)
DSC[i][:] = rows
# 让数据在矩阵中按列存储
DSC = DSC.T
============================================
需求1:按行读写取文件
file = open("sample.txt")
# 读文件
for line in file:
pass # do something
file.close()
# 写文件
if os.path.exists(file):
os.move(file)
new_file = open(file, 'w')
new_file.write() # 写入
mew_file.close()
w
表示覆盖写,如果要循环写入文件使用 a
============================================
需求2:去掉读取行末尾的换行符
line = line.strip('\n')
============================================
需求3:复制文件并重命名
shutil.copyfile(old_file_path, new)file_path)
============================================
需求4:获取文件夹下所有文件的名称
os.listdir()
得到的是仅当前路径下的文件名,不包括子目录中的文件