Python文件处理与路径获取

文章目录

  • os.path 函数
  • glob
  • csv 文件处理
  • excel 文件处理
  • 文本文件处理

os.path 函数

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

glob 模块可以查找符合特定规则的文件路径名,相当于搜索功能。使用前导入:

import glob

============================================

需求1:查找所有符合条件的文件路径

list = glob.glob('*.py')

匹配出所有后缀为 py 的文件,并将其以 List 的形式返回

============================================


csv 文件处理

使用前导入:

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)

excel 文件处理

依赖库安装:

conda install xlrd
conda install xlwt

Excel文件内容:
Python文件处理与路径获取_第1张图片

'''
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()
  • open() 中 w 表示覆盖写,如果要循环写入文件使用 a

============================================

需求2:去掉读取行末尾的换行符

line = line.strip('\n')

============================================

需求3:复制文件并重命名

shutil.copyfile(old_file_path, new)file_path)

============================================

需求4:获取文件夹下所有文件的名称

os.listdir()

得到的是仅当前路径下的文件名,不包括子目录中的文件

你可能感兴趣的:(#,Python,编程记录)