dnf搬砖代码Python_让搬砖变得轻松——python操作excel用的脚本
首先引入一个概念,python这个语言里面有很多很成熟的“包”,也就是各种操作的moudle,对于某一个特定的project里面的code,我们可以调用各种各样的包来帮助我们完成某些操作,这里不由得感叹一句,那些开发出这些包的人真的是蛮厉害的
在调用这些interpreter之前,我们要先加载这些包,这个操作可以在Pycharm里面进行,preference->Project: Projectname->Project interpreter->"+" sign
加载包们的窗口
读了一些各位大牛的博客之后发现,好像python的话常用来操作excel的有这个openpyxl,xlwt,xlrd等等,大概看了看大佬们的推荐,感觉openpyxl的功能比较全面,而且只有一个包就够了
各个操作excel的python包的功能对比
好像这个的缺点是处理数据需要的时间相对来说比较长,不过我的数据处理量也没有那么大,于是就选择了openpyxl这个包来折腾
首先明确一下这个脚本的目的,就是读取从server上下载的.dat文件,这个文件里面的格式大概是这样的
.dat 文件的样子(可能已经有人发现了是bader的输出文件)
对于这样一个文件,我们把它转换成Excel的文件会更容易进行直观的编辑,我们想要的结果大概是这样的
希望他变成.xlsx的文件的样子
而我们有一大堆这样的文件,分别处于以规律的数字命名的directory里(其实也就是提交job时候的文件夹),于是我们就需要一个script来分别打开这样的.dat文件,再把他们写入到一个workbook里面,每一个.dat文件独占一个worksheet,worksheet以读取该.dat文件的directory的名字命名,这就是我们这个script的意义
步骤如下:
1. 读取.dat文件
使用python里面的open打开文件,读取每一行的数据
def ReadTxt(file):
ls = list()
with open(file, 'r', encoding='utf-8-sig') as f:
再将读取的数据分割成columns,因为数据一共7个cols,所以这里分割成了7个,这个写得有点愚蠢,大大们不要喷我哈,以后再尝试改成更精简的方法
for line in f.readlines():
# To check if the given data can be split
try:
lists = line.split(None, 7)
# Split the list 'line' into 7 different parts, according to if it is an alpha
co1 = lists[0]
co2 = lists[1]
co3 = lists[2]
co4 = lists[3]
co5 = lists[4]
co6 = lists[5]
co7 = lists[6]
# split the given data into cols
ls.append((float(co1), float(co2), float(co3), float(co4), float(co5), float(co6), float(co7)))
# Put remainders in the list
except:
print('Wrong format!')
这样我们就得到了一个存着被分割好的数据的list(这个list感觉就像c里面的一个2d array,不知道我理解得有没有问题),然后我们把这个list写进.xlsx文件就可以了
2. 写入.xlsx文件
a. 首先用pip3安装openpyxl
openpyxl这个Moudle似乎比较特殊,要先安装jdcal这个moudle,否则是无法安装成功的?这里有大大懂这个的话希望可以帮忙解释一下
pip3 install jdcal
提示成功之后再如法炮制安装openpyxl
pip3 install openpyxl
b. 安装完成之后可以开始写调用这个包的code了
这里我们用到的openpyxl里面的东西主要是这个load_workbook
from openpyxl import Workbook, load_workbook
之后可以写出
wb = load_workbook(path)
这样就可以打开/创建一个处于给定的path的xlsx文件了,这个文件是一个workbook,里面最开始会自动创建一个worksheet,名叫Sheet,这个操作就和直接新建一个空白的xlsx是一样的
在创建了这个文件之后,我们可以对这个文件进行写入和读出等操作,首先是创建一个以读取.dat文件的directory的名字命名的worksheet
sheet = wb.create_sheet(sheet_name)
然后将之前的list写入,保存文件就可以了,记得写完之后要保存,不然就像我们平时写东西但是退出的时候选择’不保存‘一样,白干一场了
index = len(value)
for i in range(index):
sheet.append(value[i])
# write the list into worksheet rank by rank
# Save the workbook in previous path
wb.save(path)
3. 整理一下并且加入一些prompts
加入一些读取格式错误的prompts,让这些prompts能够print到log文件里,以后出了问题查起来也方便,当然最好是不出问题
最后的代码就是这个样子了
#!/usr/bin/env python
# a script to read text and transfer to xlsx file
#-*- coding:utf-8 -*-
from openpyxl import Workbook, load_workbook
# Read from Text (.dat)
def ReadTxt(file):
ls = list()
with open(file, 'r', encoding='utf-8-sig') as f:
num = 1
# A statistic num of ranks
for line in f.readlines():
# To check if the given data can be split
try:
lists = line.split(None, 7)
# Split the list 'line' into 7 different parts, according to if it is an alpha
co1 = lists[0]
co2 = lists[1]
co3 = lists[2]
co4 = lists[3]
co5 = lists[4]
co6 = lists[5]
co7 = lists[6]
# split the given data into cols
if co1 != "#":
# Chew up the first line title
ls.append((float(co1), float(co2), float(co3), float(co4), float(co5), float(co6), float(co7)))
# Put remainders in the list
num = num +1
except:
print('Wrong format in line ' + str(num) + '!')
num = num +1
# return as a list
return ls
# Write in xlsx
def Write_Excel(path, sheet_name, value):
index = len(value)
# To detect how many ranks in the list
wb = load_workbook(path)
# Open a workbook (No matter already exist or not) in a specific path, which we can specify when we call this func
sheet = wb.create_sheet(sheet_name)
# Create a new worksheet in this workbook, named as given name
#sheet.column_dimensions['B'].width = 115
# Set cell format, width, height...
for i in range(index):
sheet.append(value[i])
# write the list into worksheet rank by rank
# Save the workbook in previous path
wb.save(path)
print("Current txt " + sheet_name + " has been wrote, Tadaaaaaa!")
# Remove empty sheet
def Remove_empty(path):
wb = load_workbook(path)
ws = wb['Sheet']
wb.remove(ws)
# Remove empty sheet
wb.save(path)
print('Empty sheet has been removed successfully')
# Main func
if __name__=='__main__':
book_name_xlsx = r'/path/sum.xlsx'
# .xlsx file path where we want to generate this file
wb = Workbook()
wb.save(book_name_xlsx)
# Create and save file as given name and path
# Create a worksheet named as given word
for name in range(12,21):
# Set the range as 12 to 20, which is the range of interested interlayer distance
sheet_name_xlsx = str(name)
# Use target directory name as sheet name
art = ReadTxt(r'/path/'+sheet_name_xlsx+'/ACF.dat')
# Call previous ReadText func, the path is the parent folder of tasks
# Insert the title
art.insert(0, ('#', 'X', 'Y', 'Z', 'CHARGE', 'MIN DIST', 'ATOMIC VOL'))
Write_Excel(book_name_xlsx, sheet_name_xlsx, art)
# Call previous write func
Remove_empty(book_name_xlsx)
# Remove empty sheet
这个就是最后的半成品了,可以再加一些其他的功能,整体的框架大概就是这样,引入了一个openpyxl的包,实现了对.xlsx文件的创建以及写入,希望能帮到苦于机械式重复操作的你
range () 函数的使用是这样的:
range(start, stop, [step]),分别是起始、终止和步长,实际范围是从start 到 stop-1
dnf搬砖代码Python_让搬砖变得轻松——python操作excel用的脚本相关推荐
- python处理excel表格实例-使用Python操作excel文件的实例代码
使用的类库 pip install openpyxl 操作实现 •工作簿操作 # coding: utf-8 from openpyxl import Workbook # 创建一个excel工作簿 ...
- python 操作excel神器_【转】多图+代码 | 详解Python操作Excel神器openpyxl的各种操作!...
转自:https://blog.csdn.net/weixin_41846769/article/details/108273349 前言 大家好,在之前的十几篇办公自动化系列文章中,我们大多是以真实 ...
- python每行输出8个式子_多图+代码 | 详解Python操作Excel神器openpyxl的各种操作!
前言 大家好,在之前的十几篇办公自动化系列文章中,我们大多是以真实的案例需求来讲解Python如何进行自动化办公操作,并且多次使用到openpyxl来处理表格,今天我们就来详细的盘点Python操作E ...
- Python操作Excel工作簿的示例代码(.xlsx)
前言 Excel 作为流行的个人计算机数据处理软件,混迹于各个领域,在程序员这里也是常常被处理的对象,可以处理 Excel 格式文件的 Python 库还是挺多的,比如 xlrd.xlwt.xluti ...
- Python操作Excel的一些基本程序代码
下面是一些示例代码,演示使用Python操作Excel的一些常用操作. 打开Excel并添加工作簿 下面的脚本代码简单地调用Excel,添加工作簿并将空工作簿保存在默认文件夹中. import win ...
- 最全Python操作excel代码,让你每天早下班两小时
在数字化时代,很多人工作中经常和excel打交道.本文介绍Python操作excel的脚本,让你工作效率更高. 文章目录 一.安装openpyxl模块 二.加载库 三.创建文件和工作表 四.在工 ...
- python操作Excel表格小妙招:只需十行代码,可以将多张Excel合并为一张
前几天遇见这么一个问题,手上有很多张表格,这些表格中都只有一个 sheet,需要把这些表汇总到一张表. 一张表中有多个 sheet,每一个 sheet 的名称是每张表格的文件名. 如果手动合并,往往需 ...
- python操作excel表格及封装代码
1.使用openpyxl库,使用pip进行安装 pip install openpyxl 2.测试表格:Sheet1 3.读取表格中某个单元格(Cell) 的value from openpyxl i ...
- python做excel表格代码_python操作excel表格
我们在写测试用例的时候,是创建一个表格.xlsx,然后把各种条件加到这张表格中去,所以,如何对excel表格操作,是相当重要的一环,那么,接下来,这篇博客就直接教会大家如何通过python去处理平时工 ...
最新文章
- Netflix发布Polly.JS,一个用于HTTP交互的开源库
- 022_Table表格
- 【阿里云产品公测】大数据下精确快速搜索OpenSearch
- 苹果iOS 10.3.1修复博通Wi-Fi芯片重大安全漏洞
- 信息学奥赛一本通 2041:【例5.9】新矩阵
- 为ASP.NET MVC应用添加自定义路由
- 一、开始动手开发网球平台
- 成功 Root ------ 红米note3
- Camera(2) camera i2c总线协议介绍
- Windows 7安装.net framework 4 安装
- 工作模板-----MySQL示例
- RK3288方案开发,RK3288开发板方案,RK3288平板芯片参数资料
- 基于QT实现的可视化链表(单链表、循环链表、双向链表)
- 程序员是要专精,还是要广度?
- SDIO wifi Marvell8801/Marvell88w8801 介绍(五) ---- Marvell8801/Marvell88w8801 TLV
- 【转自知乎】软件实施工程师技能要求
- 海信电视LED42EC510N进入工厂模式方法
- 因为错过,所以才懂得珍惜
- 用DP-GEN跑个简单的例子吧——CH4
- Java 构造函数特点
热门文章
- 1.JAVA基础汇总
- tomcat执行shutdown报错Could not contact [localhost:8005] (base port [8005] and offset [0]). Tomcat may n
- 怎么做抖音故障艺术风格人物照片效果
- C51中intrins_h头文件解释分析
- C51中的INTRINS.H:内部函数
- 日本电产尼得科Nidec研发出超薄直线振动马达
- 关于openfire支持视频聊天
- 【工具】OmniGraffle 激活码、UML模板型版
- Mac下CoreShell文件上传和下载配置
- golang生成UUID通用唯一识别码