1.读csv文件
#读取csv文件,以行为单位,返回一个列表
def csvloader(fileName):
datalist=[]
encoding='gbk'
data=[]
try:
with open(fileName, newline='', encoding=encoding) as csvfile:
rows = csv.reader(csvfile)
data+=rows
except:
with open(fileName, newline='', encoding='utf-8') as csvfile:
rows = csv.reader(csvfile)
data+=rows
for row in data:
datalist.append(row)
return datalist
2.存csv文件
#向csv文件中存数据,data是list
def saveCsv(csvName,data):
try:
f = open(csvName, 'a', encoding='GB2312', newline='' "")
csv_writer = csv.writer(f)
for i in data:
csv_writer.writerow(i) # 写入文件
return "Success"
except:
return "False"
encoding是设置存储格式,如果你用excel打开,就用GB2312,用编译器打开就需要看你自己的设置了,但是也编译器也可以设置GB2312打开方式。如果你需要将数据储存到数据库,那么你需要读csv,然后转数据格式为"utf-8",然后存入数据库
‘a’表示追加,‘w’表示覆盖写,newline=' ' " " ,是解决每次写后出现的空行问题。
3、txt文件读取
'''
# 对于以空格、制表符、回车来做分隔符的数据,返回的是一个整体数据的列表,一个以行为单位的列表
# label = 1 ,表示返回一个整体列表 [....]
# label = 0 ,表示以每行为单位,返回一个列表 [[...],[...],...,[...]]
# 下面看似代码冗余,实际是为了减少if操作次数,在文件相当大的时候,每循环一次就要一次比较操作。
'''
def filetool1(fileName,label):
fr = open(fileName,'r',encoding='utf-8')
# 读出文件所有内容
arrayLines = fr.readlines()
# 针对有BOM的UTF-8文本,应该去掉BOM,否则后面会引发错误。
arrayLines[0] = arrayLines[0].lstrip('\ufeff')
list=[]
if label==1:
for line in arrayLines:
# s.strip(rm),当rm空时,默认删除空白符(包括'\n','\r','\t',' ')
line = line.strip()
# 使用s.split(str="",num=string,cout(str))将字符串根据'\t'分隔符进行切片。
line = line.split('\t') # line = [xxx,xxx,xxx,xxx] 列表
list += line
else:
for line in arrayLines:
# s.strip(rm),当rm空时,默认删除空白符(包括'\n','\r','\t',' ')
line = line.strip()
# 使用s.split(str="",num=string,cout(str))将字符串根据'\t'分隔符进行切片。
line = line.split('\t')
list.append(line)
return list
4、文件夹下多txt文件读取
'''
# 处理文件夹中的数据,返回的是以文件夹下一个整体文件数据的列表
# return 文件夹下文件名的list,文件的数据list [[文件1的数据],[文件2的数据],[文件3的数据],...]
'''
def filetool2(flooderName):
fileNames = listdir(flooderName)
dataList=[]
for file in fileNames:
li=[]
# 打开文件
fr = open(flooderName+'/%s' % (file))
lines=fr.readlines()
for line in lines:
line=line.strip() # 去回车符
li.append(line)
dataList.append(li)
return fileNames,dataList
5、docx文档处理
import docx
from docx.oxml.ns import qn
path = "try.docx"
# 读取文本
file = docx.Document(path)
# 定义文本存储列表
s =[]
for p in file.paragraphs:
s.append(p.text)
# 文本列表排序
s.sort()
# 新定义一个docx文档
doc = docx.Document()
# 设置字体格式
microsoft_font = u'宋体' # u 表示后面的字符串以 Unicode 格式进行编码
paragrap = doc.add_paragraph("")
paragrap.add_run("")
# 将单词添加进文档
for word in s:
paragrap.add_run(word+"\n")
# 存储文档
doc.save("test.docx")
6、获取当前路径的上一级路径
os.path.split(file)[0]
7、获取当前路径最后的文件夹名字或文件名
os.path.split(file)[-1]
8、 递归获取文件夹中所有非文件夹内容,比如多重文件夹下面的图片、文档等。
def search_detect_files(path, all_files):
# 显示当前目录所有文件和子文件夹,放入file_list数组里
file_list = os.listdir(path)
# 循环判断每个file_list里的元素是文件夹还是文件,是文件的话,把名称传入list,是文件夹的话,递归
for file in file_list:
# 利用os.path.join()方法取得路径全名,并存入cur_path变量
cur_path = os.path.join(path, file)
# 判断是否是文件夹
if os.path.isdir(cur_path):
# 递归
search_detect_files(cur_path, all_files)
else:
# 将文件夹路径和文件夹中file添加进all_files里
all_files.append([path,file])
return all_files
9、创建文件夹
def mkdir(path):
folder = os.path.exists(path)
if not folder: # 判断是否存在文件夹如果不存在则创建为文件夹
os.makedirs(path) # makedirs 创建文件时如果路径不存在会创建这个路径
10、excel读取操作
import openpyxl
import os
# 获取excel对象
new_filename = 'test.xlsx'
wb = ''
# 如果当前文件不存在就创建一个新的文件
if os.path.exists(new_filename):
try:
wb = openpyxl.load_workbook(new_filename)
except IOError as err:
print(err)
else:
wb= openpyxl.Workbook()
# 获得sheet对象
sheet = wb['test']
# 获得excel的行数和列数
print(sheet.max_row, sheet.max_column)
# 存储excel中的数据
data = []
# 循环
for rows in range(1, sheet.max_row + 1):
temp_list = []
for cols in range(1, sheet.max_column + 1):
# 获取坐标为(rows,cols)的数据
temp_list.append(sheet.cell(rows, cols).value)
data.append(temp_list)
print(data)
# 关闭文件
wb.close()
11、写入excel
import openpyxl
# openpyxl,xlrd
import os
new_filename = 'test.xlsx'
wb = ''
if os.path.exists(new_filename):
try:
# 获取excel对象
wb = openpyxl.load_workbook(new_filename)
except IOError as err:
print(err)
else:
wb= openpyxl.Workbook()
# 准备写入文件的数据
data=[[1,2,3],[4,5,6]]
# 创建一个新的表格
ws1 = wb.create_sheet("Mysheet1") # 在末尾插入(默认)
for i in range(len(data)):
for j in range(len(data[0])):
ws1.cell(i+1,j,one[i][j-1])
# 保存写入的数据
wb.save('test.xlsx')
wb.close()