Python读取excl里内容编辑并上传到服务器

Python读取excl里内容编辑并上传到服务器,第1张

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 前言
  • 一、如何读取excl文档?
  • 二、处理EXCL内容
    • 1.基本的 *** 作
    • 2.读取特定行列的值并修改
    • 3.其他
    • 4.上传到服务器
  • 总结


前言

python如何读取excl表格内容并上传到服务器


提示:以下是本篇文章正文内容,下面案例可供参考

一、如何读取excl文档?

使用xlrd库
是用来从Excel中读写数据的,但我们通常只用它进行读 *** 作,写 *** 作会相对于装门写入的模块麻烦一些。
正则表达式的学习参考:
https://blog.csdn.net/Weary_PJ/article/details/104079815
代码如下(示例):

import xlrd
import re #正则表达式的库
data = xlrd.open_workbook('D:\test_1.xls')
data.sheets()
table = data.sheet_by_index(0)  # 取第一个工作簿
reserve_data = open('D:\test.v','w') #将内容存入test.v文件中

在程序最后使用reserve_data.close() 我理解是关闭文档 不读了。

二、处理EXCL内容 1.基本的 *** 作

1将打印内容放到test.v的文档中。:

print ('想要打印的内容',file = reserve_data )

2.中间会用到for循环,可以循环输出打印,并且可以使用双for循环,这里在刚开始使用的时候出现了一个报错,这里会说值太多,没办法处理啥的。

code_name = ('mcok1_ck','mcko2_ck','snrst','TRACECLK')
excl_name = ('o_MCO0','o_MCO1','o_RESET_0','o_TRACE_CLK')
for a,b in excl_name,code_name :
    print ('assign  {} = {} ;'.format(a,b),file = reserve_data)

解决办法:

for a,b in zip(excl_name,code_name) :

好像是压缩一下,然后运行就不会报错,并且能够双FOR循环了。
在上面用到 .format() 就能够调用a,b中的字符串,依次给到前面的{}中去。输出的结果中不会有{},等于说两个{}分别变成了a和b的内容了。

3.中间还会用到range,表示每次循环从0到3:
当然后面的括号也可以变成range(起始数字,结束数字):

for i in range (0,4): 
start=1
end= 100
for i in range (start,end): 

4.对齐文档的内容。如果什么也不管,那么输出的文档可以层次不齐,不方便阅读。
format(‘内容’,“符号位+数字 ”)符号位可以是>右对齐 ^ 居中 <左对齐
例表示居中对齐,并且占用14个字符,因为port_count是10个字符所以在左右两遍会补两个空格,如果在^前面添加符号或字母,则补齐的就会是符号或者字母:

print(format('port_count',"^20"))

print(format('port_count',"a^20"))

2.读取特定行列的值并修改

1.读取特定的行和列
因为我的表格内分成5个端口,每个端口都是从0-15,所以第二个FOR循环是从0-15,并且我想要获取绿色那列的所有数据(后面还有3列绿色的数据) 。

start = 24
end   = 200  
for row in range (start,end):  #每次处理一行数据,从excl第24行开始到199行结束
    for port_count in range (0,16): #从0计数到15
        value_AF0 = table.cell_value(rowx=row+port_count, colx=8) # 将行数逐次+1 把第8列的数给value
        value_AF1 = table.cell_value(rowx=row+port_count, colx=9) #读每行中第 8,9,10,11列的数据
        value_AF2 = table.cell_value(rowx=row+port_count, colx=10)
        value_AF3 = table.cell_value(rowx=row+port_count, colx=11)

2.一行写出if else 语句,下面两个例子相等

        value_AF1 = '1\'b0' if value_AF1 == "" else value_AF1
         if value_AF1 == "" :
          	value_AF1 = '1\'b0'
         else value_AF1
3.其他

1使用列表
list.append(value) 能够将value中的值添加到list列表中去
2在代码前面已经将内容存入list中去,下面程序是寻找list中出现的重复项,并分别打印不同的内容;
list的内容如图:
我需要做的内容是 当名字只出现一次是 打印一次
名字出现2次的 打印两个不同内容。

counter = 0
list_value_read = []
for j in range (int(len(list_value)/5-1)):
    some = str(j*5)
    counter = 0
    if some not in list_value_read:
        for i in range(j*5,int(len(list_value)-5),5):
             if list_value[j*5] == list_value[i+5]:
                counter = counter + 1
                list_value_read.append(str(i))
        #count == 1 当发现重复的时候,输出两行代码:
                print('assign {} =( p{}{}_af == {} ) ? p{}_i[{}] :'.format(list_value[j*5],list_value[j*5+1],list_value[j*5+2],list_value[j*5+3],list_value[j*5+1],list_value[j*5+2]),file=reserve_data)
                print('                   ( p{}{}_af == {} ) ? p{}_i[{}] : {} ;'.format(list_value[i+5+1],list_value[i+5+2],list_value[i+5+3],list_value[i+5+1],list_value[i+5+2],list_value[i+5+4]), file=reserve_data)
        if counter == 0 :
            print('assign {} = (p{}{}_af == {} ) ?  p{}_i[{}] : {} ;'.format(list_value[j*5],list_value[j*5+1],list_value[j*5+2],list_value[j*5+3],list_value[j*5+1],list_value[j*5+2],list_value[j*5+4]),file=reserve_data)

4.上传到服务器
#该模块作用:将生成的点V文件########################################################################
from ftplib import FTP #加载ftp模块
IP = '10.0.11.11'
user = 'hardware'
password = 'icube123'
filename = 'test.v'
path =  'D:\test.v'
ftp=FTP() #设置变量
ftp.set_debuglevel(2) #打开调试级别2,显示详细信息
ftp.connect(IP) #连接的ftp sever和端口
ftp.login(user,password)#连接的用户名,密码

ftp.storbinary('STOR %s'%filename, open(path, 'rb',21)) #storbinary是以二进制形式上传文件。
print('success')
总结

本次使用python是为了维护pin_mux的文档,方便设计,节约时间,但是初次学习python代码写的又臭又长,def 和class不会用,下次学习使用这两个,解决重复使用代码的问题。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/915974.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存