首页 > 编程语言 >常见python工具的基本构造-入门

常见python工具的基本构造-入门

时间:2023-09-08 15:23:22浏览次数:40  
标签:入门 img python list 构造 file csv root name

一、常见库

二、写的两个案例

根据图片目录生成word

from docx import Document# 创建 Document 对象,等价于在电脑上打开一个 Word 文档
from docx.shared import Inches, Cm  # Inches=英寸  Cm=厘米  1英尺=2.54厘米
import os
from tkinter import *
import tkinter.messagebox

def getImgList(dir):
    dirList = []
    for single_img in os.listdir(dir):
        dirList.append(r'{folder}\{file}'.format(folder=dir, file=single_img))
    return dirList

def main():
    d1 = Ent_Dir1.get()
    d2 = Ent_Dir2.get()
    wordloc = Ent_WordLoc.get()
    if(d1 == ""):
        tkinter.messagebox.showerror(title = '提示',message='图片目录1为空')
        return
    if(d2 == ""):
        tkinter.messagebox.showerror(title = '提示',message='图片目录2为空')
        return
    if(wordloc == ""):
        tkinter.messagebox.showerror(title = '提示',message='word位置为空')
        return
    file_name = d1.split("\\")[-1]+"_"+d2.split("\\")[-1]
    
    document = Document()# 在 Word 文档中添加一个标题
    # dir1 = r"J:\图片\2022一期"
    # dir2 = r"J:\图片\2323一期"
    dir1 = r'{file}'.format(file=d1)
    dir2 = r'{file}'.format(file=d2)
    dirlist1 = getImgList(dir1)
    dirlist2 = getImgList(dir2)

    # print(dirlist1)
    for i in range(len(dirlist1)):
        a = document.add_paragraph().add_run()
        a.add_picture(r'{file}'.format(file=dirlist1[i]), width=Cm(7.5))
        a.add_picture(r'{file}'.format(file=dirlist2[i]), width=Cm(7.5))
    document.save(r'{wordloc}\{file_name}.docx'.format(wordloc = wordloc,file_name = file_name))
    tkinter.messagebox.showinfo(title = '提示',message='word正在持续生成中(可打开word查看),请勿关闭程序')

root = Tk()
root.title("根据图片目录生成word")
root.geometry("700x200+500+300")
# 创建一个按钮,按钮名字为”点击“

# 图片目录1
label1 = Label(root,text="图片目录1:")
label1.grid(row=0,column=0)
Ent_Dir1=Entry(root,width=100)
Ent_Dir1.grid(row=0,column=1,ipadx=10)

# 图片目录2
label2 = Label(root,text="图片目录2:")
label2.grid(row=1,column=0)
Ent_Dir2=Entry(root,width=100)
Ent_Dir2.grid(row=1,column=1,ipadx=10) 
# 生成word位置
label3 = Label(root,text="生成word位置:")
label3.grid(row=2,column=0)
Ent_WordLoc=Entry(root,width=100)
Ent_WordLoc.grid(row=2,column=1,ipadx=10) 

# 生成
btn_gen = Button(root,text="生成(点击后程序未响应是正常的)",command=main,width=30)
btn_gen.grid(row=3)

# 让根窗口保持运行
root.mainloop()

读取图片坐标生成csv

import os
from tkinter import *
import tkinter.messagebox
import exifread
import csv

def get_single_gps(img):
    with open(img, 'rb') as f:
        # 直接读取度分秒格式的经纬度数据
        contents = exifread.process_file(f)
        try:
            longitude = contents["GPS GPSLongitude"].values
            has_longitude = True
        except:
            has_longitude = False
        if not has_longitude:
            return '', ''
        else:
            longitude = contents["GPS GPSLongitude"].values
            latitude = contents["GPS GPSLatitude"].values
            height = contents["GPS GPSAltitude"].values
            # 度分秒转换成十进制数据
            longitude_f = longitude[0].num / longitude[0].den + (longitude[1].num / longitude[1].den / 60) + (
                    longitude[2].num / longitude[2].den / 3600)
            latitude_f = latitude[0].num / latitude[0].den + (latitude[1].num / latitude[1].den / 60) + (
                    latitude[2].num / latitude[2].den / 3600)
            altitude_f = height[0].num / height[0].den
            # 打印验证数据
            # print(img,end=",")
            # print(longitude_f,end=",")
            # print(latitude_f,end=",")
            # print(altitude_f)
            return longitude_f, latitude_f,altitude_f


def get_gps(img_path,postfix):
    img_name = []
    logitude_list = []
    latitude_list = []
    altitude_list = []
    for single_img in os.listdir(img_path):
        if(single_img.split(".")[-1] != postfix):
            continue
        img_name.append(single_img)
        longitude, latitude,altitude = get_single_gps(img_path + '/' + single_img)
        logitude_list.append(longitude)
        latitude_list.append(latitude)
        altitude_list.append(altitude)
    return img_name, logitude_list, latitude_list,altitude_list

def create_csv(root,file_name):
    header = ['img_path', 'Longitude', 'Latitude','Altitude']
    with open(root + '/'+file_name+'.csv', 'w', encoding='utf-8-sig', newline="") as f:
        writer = csv.writer(f)
        writer.writerow(header)


def write_csv(root,file_name, result_list):
    for i in result_list:
        with open(root + '/'+file_name+'.csv', 'a', encoding='utf-8-sig', newline="") as f:
            writer = csv.writer(f)
            writer.writerow(i)


def main():
    img = Ent_ImgDir.get()
    csv_loc = Ent_CSV.get()
    postfix = Ent_postfix.get()
    if(img == ""):
        tkinter.messagebox.showerror(title = '提示',message='图片目录为空')
        return
    if(csv_loc == ""):
        tkinter.messagebox.showerror(title = '提示',message='csv目录为空')
        return
    if(postfix == ""):
        tkinter.messagebox.showerror(title = '提示',message='图片后缀为空')
        return
    file_name = img.split("\\")[-1]
    print(file_name)


    root = os.getcwd()
    create_csv(csv_loc,file_name)
    img_name, logitude_list,latitude_list ,altitude_list= get_gps(img,postfix)
    index = range(len(img_name))
    row_list = [[img_name[i], logitude_list[i], latitude_list[i],altitude_list[i]] for i in index]
    write_csv(csv_loc,file_name, row_list)
    tkinter.messagebox.showinfo(title = '提示',message='生成完毕')

# if __name__ == '__main__': 
#     createTk()
#     img = 'E:\img\DJI_202309041627_013_kzy3'
#     main(img)
root = Tk()
root.title("读取图片坐标生成csv")
root.geometry("700x200+500+300")
# 创建一个按钮,按钮名字为”点击“

# 图片目录
label1 = Label(root,text="图片目录位置:")
label1.grid(row=0,column=0)
Ent_ImgDir=Entry(root,width=100)
Ent_ImgDir.grid(row=0,column=1,ipadx=10)

# csv生成位置
label2 = Label(root,text="生成csv目录位置:")
label2.grid(row=1,column=0)
Ent_CSV=Entry(root,width=100)
Ent_CSV.grid(row=1,column=1,ipadx=10) 
# csv生成位置
defaultvalue = tkinter.StringVar(value="DNG")
label3 = Label(root,text="图片后缀(注意大小写):")
label3.grid(row=2,column=0)
Ent_postfix=Entry(root,width=100,textvariable=defaultvalue)
Ent_postfix.grid(row=2,column=1,ipadx=10) 

    # 生成
btn_gen = Button(root,text="生成",command=main,width=20)
btn_gen.grid(row=3)

# 让根窗口保持运行
root.mainloop()

标签:入门,img,python,list,构造,file,csv,root,name
From: https://www.cnblogs.com/CoderWangEx/p/17687561.html

相关文章

  • 【Python】坐标系转换wgs84 -> bd09
    坐标系转换"""坐标转换工具类xll--->2021-05-19developer"""importmathimportpandasaspdimportnumpyasnpfrompyprojimportProj,transform,Transformerfromxxx.settingsimportBASE_DIRimportosfromwarningsimportsimplef......
  • Python实现京东茅台抢购脚本, 原来这样就可以了?
    京东茅台抢购脚本可以分为以下几部分,具体实现步骤如下:登录京东账号首先需要登录京东账号。一个简单的方式是使用Python的selenium库。在使用selenium库前,需要安装selenium库和对应的浏览器驱动。示例代码如下所示:fromseleniumimportwebdriverbrowser......
  • 数据驱动的SEO优化策略:Python爬取工具加速效果评估
    在当下竞争激烈的网络环境中,搜索引擎优化(SEO)是网站主和数字营销人员必须重视并不断改进的关键领域。而要实现成功的SEO战略,数据分析和持续优化成为至关重要。今天,我将向给大家介绍一种基于数据驱动原则、利用Python爬虫工具来加速SEO效果评估与调整过程的高效方法。通过有......
  • python的深浅拷贝
    通过id内存地址发生变化print()打印出来的变化,这种现象就是’拷贝‘,’浅拷贝‘,’深拷贝‘拷贝(赋值)lt=[1,2,3]lt=ltlt.append(4)print(lt)#因为列表是可变类型,所以lt的值变化,lt2的值也跟着变化print(lt2)浅拷贝copy.copy()浅拷贝,拷贝出来的值内存地址都一样,但......
  • Python语言的数据可视化库
    Seaborn是一个基于Python语言的数据可视化库,它能够创建高度吸引人的可视化图表。在Matplotlib库的基础上,提供了更为简便的API和更为丰富的可视化函数,使得数据分析与可视化变得更加容易。Seaborn的设计哲学是以美学为中心,致力于创建最佳的数据可视化。同时也保持着与Python生态系统......
  • Python跨平台兼容性解决方案及实现方法
    在如今多样化的网络计算环境下,开发者们面临着将应用程序运行于不同操作系统和硬件平台上的挑战。本文旨在分享一些关键技巧和实际操作步骤,帮助您更好地理解并实现Python中的跨平台兼容性,使您编写出具有广泛适应性、可移植性强以及稳定高效的代码。一、了解目标平台特点......
  • 【Python 自动化】小说推文一键生成思路概述
    最近看了一下小说推文成品软件的思路,发现可以完全迁移到我的BookerAutoVideo上面来。这篇短文里面,我试着分析一下整个推文视频生成的流程,以及简要阐述一下有什么工具。整体流程是这样:分句原文是按照段落组织的,我们可能希望按照句子生成图片。于是我们需要把段落拆成句子,像这......
  • python爬虫练习1-百度图片
     写了一个简单的爬图片练习importrequestsimportosdefbd_img(title1):url=f'https://image.baidu.com/search/acjson?tn=resultjson_com&logid=10755979809828115852&ipn=rj&ct=201326592&is=&fp=result&fr=&word={title1}&queryWord......
  • 深入理解 Python and 逻辑运算符(踩坑)
    1.引子defenabled()->bool:a=["a,"b"] b=Truec=Falsereturn(bandc)or(banda)以上代码返回什么?实际生产项目踩到的坑,也怪自己没理解到未,才疏学浅!!!想当然的以为python自己会做真值判断了。其实真值判断是在if条件语句时会生效,但在普通的......
  • python模拟用户登录
    python模拟用户登录目录python模拟用户登录一、授权认证二、Cookie认证一、授权认证1、HTTP基础认证importrequestsfromrequests.authimportHTTPBasicAuthurl="https://xxx.xxx.xxx/"username="admin"password="admin"#HTTP基础认证response=requests.ge......