tag 标签: python

相关帖子
相关博文
  • 热度 2
    2024-6-17 12:40
    352 次阅读|
    0 个评论
    /python-3.8.6-embed-amd64.zip是一个Python的嵌入版本,通常以压缩包形式提供,用户需要手动解压并配置环境,而镜像则通常是指用于部署或存储的完整系统或应用的副本,它们在用途、安装过程以及配置方式等方面存在区别。以下是具体分析: 1. 用途 - /python-3.8.6-embed-amd64.zip:这个嵌入版本的Python主要用于轻量级的应用或集成到其他系统中,无需安装直接解压即可使用,常用于携带式应用或嵌入式系统开发。 - 镜像:通常用于完整的系统或应用部署,在服务器上创建相同的环境或数据备份,以便于快速恢复和部署。 2. 安装过程 - /python-3.8.6-embed-amd64.zip:需要手动下载并解压到指定目录,之后需自行配置环境变量和路径,还需要手动安装pip等工具。 - 镜像:镜像的使用通常依赖于特定的部署工具,如Docker等,可以直接拉取已经配置好的镜像文件,一键部署运行。 3. 配置方式 - /python-3.8.6-embed-amd64.zip:可能需要手动编辑配置文件如_pth文件,添加库的路径,有时还需要从其他来源复制tkinter等模块文件。 - 镜像:镜像通常预先集成了所需配置,不需要用户再次进行复杂的配置过程。 4. 便携性 - /python-3.8.6-embed-amd64.zip:此压缩包因为无需安装步骤,更适合于携带或集成到移动介质中,在不同机器上使用。 - 镜像:镜像文件一般较大,不太适合携带,但适用于云存储和快速部署。 5. 依赖性 - /python-3.8.6-embed-amd64.zip:可能需要额外下载和配置依赖项,比如pip等。 - 镜像:大多数镜像包含了预配置的依赖项,减少了手动安装依赖的环节。 6. 更新维护 - /python-3.8.6-embed-amd64.zip:更新和维护较为繁琐,每次更新都需要手动下载新的压缩包,并重新配置环境。 - 镜像:通过标签管理不同的版本,可以很方便地切换和更新。 7. 系统资源消耗 - /python-3.8.6-embed-amd64.zip:该嵌入版本相对节省系统资源,因为它仅包含必要的组件。 - 镜像:镜像可能包含完整的运行环境,因此对系统资源的消耗相对较高。 8. 可定制性 - /python-3.8.6-embed-amd64.zip:提供更多的自主权,用户可以根据需求手动添加或删除库和模块。 - 镜像:通常是预配置的,可定制性较差,但用户可以通过自定义镜像来实现特定需求。 在选择嵌入版Python和镜像时,可以考虑以下几点建议: - 如果需要更多的灵活性和对环境的控制权,嵌入版可能更符合需求。 - 如果追求快速部署和环境一致性,镜像会是更好的选择。 总的来说,/python-3.8.6-embed-amd64.zip提供了一个精简的Python运行环境,适合于轻量级或便携式应用,而镜像则提供了一种完整且一致的环境复制方法,适合于快速部署和大规模的系统运维。
  • 热度 3
    2024-4-10 23:25
    2113 次阅读|
    1 个评论
    很高兴有机会试读这本书,一直想系统的学习一下python,但是个人太懒了,总的三天打鱼两天晒网的,正好通过这本书全面的学习一下python基础知识。本书还通过chatgpt进行基础知识点讲解,这样不仅内容全面还节省了查找的时间。 本书的内容从零基础开始,由浅入深地介绍python的基础语法及相关概念,无须任何编程经验即可阅读学习,书中的相关知识点讲解都有示例代码,方便结合代码进行理解,边学边练。书中通过向chatgpt提问的方式获取信息和指导,提高了学习效率,节省了查找时间,之后还介绍了chatgpt在实际开发中的应用,通过本书不仅可以学会python还可以掌握如何使用chatgpt来学习编程语言。 书中的每个章节都是由询问chatgpt相关知识点,至各知识点练习,然后让chatgpt生成一个综合的示例代码,最后再让chatpgt来进行疑难点的答疑解惑,层次分明有条理,学习由浅入深很容易掌握各知识点的基础和实际应用。 各章节结构如下: 通过chatgpt完成知识点的学习,可以看到输出的内容很工整详细 各知识点学习带有代码示例,容易上手理解 还能让chatgpt生成一个简单的综合示例代码 最后再对疑难问题进行答题,可以少走弯路 总结:本书还是非常值得一读的,特别是想要入门python的朋友,本书不仅条理清晰,而且作者还很贴心的提供了很多的源代码,练习题,开发实战安全,chatgpt调用方法与操作手册等,可以在短时间内提高对python的理解与编程水平。
  • 热度 2
    2023-10-23 10:24
    79 次阅读|
    0 个评论
    import pandas as pd import re file_path = r'D: DOE5.csv' spec_path = r'D: \spec.csv' wafer_column_name = "WAFER" rawdata = pd.read_csv(file_path , encoding = "utf-8" ) def read_e (file , sheet): to_read= pd.read_excel(file , sheet) return to_read file_name = r'D: \IGBT lot5.xlsx' sheet = sheet1 = read_e(file_name , sheet ) sheet2 = read_e(file_name , sheet ) sheet3 = read_e(file_name , sheet ) merged_sheet = pd.concat( ) merged_sheet =merged_sheet .map( lambda x:x ) merged_sheet =merged_sheet .map( lambda x:x ) del merged_sheet ft1 =merged_sheet.pivot_table( index = , columns = 'axis' , values = 'result_string' ) ft1_1 = ft1.reset_index() ft1_1 = 0 def dic_cd (x , x_f): dic ={} for i in range ( 0 , len (x_f)): dic ] =x return dic y_c = range ( 5 , 23 , 1 ) y_ft = range (- 35 , - 17 , 1 ) y_cd = dic_cd(y_c , y_ft) x_c = range ( 5 , 27 , 1 ) x_ft = range ( 21 , - 1 , - 1 ) x_cd =dic_cd(x_c , x_ft) ft1_1 = ft1_1 .map( lambda x:x_cd ) ft1_1 = ft1_1 .map( lambda x:y_cd ) key1 = for key in key1: ft1_1 = ft1_1 .astype(rawdata .dtype) merged1 = pd.merge(rawdata , ft1_1 , on =key1 , how = 'left' ) waferlist = sorted (merged1 .unique()) bin0 = bin2 = bin4 = def caculate_CP_bin (rawdata , split , key , bin): if rawdata == key) & (rawdata == bin)] is not None : bin_rate = rawdata == key) & (rawdata == bin)] .size/rawdata == key] .size else : bin_rate= 0 return bin_rate for Yield_wafer_number in waferlist: bin0.append(caculate_CP_bin( rawdata =merged1 , split =wafer_column_name , key =Yield_wafer_number , bin = 0 )) bin1.append(caculate_CP_bin( rawdata =merged1 , split =wafer_column_name , key =Yield_wafer_number , bin = 1 )) bin2.append(caculate_CP_bin( rawdata =merged1 , split =wafer_column_name , key =Yield_wafer_number , bin = 2 )) bin3.append(caculate_CP_bin( rawdata =merged1 , split =wafer_column_name , key =Yield_wafer_number , bin = 3 )) bin4.append(caculate_CP_bin( rawdata =merged1 , split =wafer_column_name , key =Yield_wafer_number , bin = 4 )) bin5.append(caculate_CP_bin( rawdata =merged1 , split =wafer_column_name , key =Yield_wafer_number , bin = 5 )) CP_Yield ={ 'Wafer' : waferlist , 'Yield' : bin0 , 'IGES_Fail' :bin1 , 'ICES_Fail' :bin2 , 'VTH_Fail' : bin3 , 'Delta_Vth fail' :bin4 , 'VCESAT_Fail' :bin5} Yield_key_table = pd.DataFrame(CP_Yield) merged1.to_csv( r'D: final2_py.csv' , index = False ) -------------代码2----------------------- import pandas as pd import os folder_path = r'D:\ Summary' file_names = combined_df = combined_df = df.drop(row , inplace = True ) df.reset_index( drop = True, inplace = True ) df = str (file_name) df = int ( str (file_name) ) combined_df.append(df) combined_df1 = pd.concat(combined_df) return combined_df1 folder_path = r'D: \IGBT' savedfolder = os.path.join(folder_path , 'merged.CSV' ) df2 = read_to_df(folder_path) df2.to_csv(savedfolder , index = False )
  • 热度 2
    2023-10-23 10:20
    71 次阅读|
    0 个评论
    import pandas as pd import re import os from tkinter import messagebox #------------------------- update foder path---------------------- folder = r'D:\ NINK' rawdata_name= 'rawdataTrans.csv' #------------------------- update foder path---------------------- #------------------------- update filter spec path---------------------- spec_path = r'D:\ spec_filter_Big.csv' #------------------------- update foder path---------------------------- #------------------------- update Parameter---------------------- Good = '.' Fail = 'X' wafer_column_name = 'WAFER' Xcord_column = 'DIE_X' Ycord_column = 'DIE_Y' Filter = 'Filter' n_star = 10 n_end = 23 #------------------------- update Parameter---------------------- file_path =os.path.join(folder , rawdata_name) rawdata = pd.read_csv(file_path , encoding = "utf-8" ) CP_SPC = pd.read_csv(spec_path , index_col = , encoding = "utf-8" ) column_list = list (rawdata.columns) if True : rawdata = 0 for row_index in rawdata.index: for column_index_key in CP_SPC.index: try : if rawdata.loc < CP_SPC.loc or \ rawdata.loc > CP_SPC.loc or \ pd.isna(rawdata.loc ): rawdata.loc = CP_SPC.loc break else : continue except KeyError : continue def caculate_CP_bin (rawdata , split , key , bin , BIN): if rawdata == key) & (rawdata == bin)] is not None : bin_rate = rawdata == key) & (rawdata == bin)] .size / \ rawdata == key] .size else : bin_rate = 0 return bin_rate waferlist = sorted (rawdata .unique()) bin0 = bin1 = bin2 = bin3 = bin4 = bin5 = for Yield_wafer_number in waferlist: bin0.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 0 , BIN = 'BIN' )) bin0_2.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 0 , BIN =Filter)) bin1.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 1 , BIN = 'BIN' )) bin1_2.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 1 , BIN =Filter)) bin2.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 2 , BIN = 'BIN' )) bin2_2.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 2 , BIN =Filter)) bin3.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 3 , BIN = 'BIN' )) bin3_2.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 3 , BIN =Filter)) bin4.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 4 , BIN = 'BIN' )) bin4_2.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 4 , BIN =Filter)) bin5.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 5 , BIN = 'BIN' )) bin5_2.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 5 , BIN =Filter)) yield_key2 = { 'WAFER' : waferlist , 'Yield' : bin0 , 'IGES_Fail' : bin1 , 'ICES_Fail' : bin2 , 'VTH_Fail' : bin3 , 'Delta_Vth fail' : bin4 , 'VCESAT_Fail' : bin5 , 'Yield_filter' : bin0_2 , 'IGES_Fail_filter' : bin1_2 , 'ICES_Fail_filter' : bin2_2 , 'VTH_Fail_filter' : bin3_2 , 'Delta_Vth fail_filter' : bin4_2 , 'VCESAT_Fail_filter' : bin5_2} Yield_key_table2 = pd.DataFrame(yield_key2) yieldTAB = os.path.join(folder , 'yield for compare.csv' ) Yield_key_table2.to_csv(yieldTAB , index = False ) map_file_names = for map_file_name in map_file_names: map_file_path = os.path.join(folder , map_file_name) wafer= int (map_file_name ) with open (map_file_path) as f: raw_list = f.readlines() Map_tables = rawdata == wafer].pivot_table( index =Ycord_column , columns =Xcord_column , values =Filter) new = Map_tables.fillna( ' ' ).replace( 0.0 , Good).replace( 1.0 , Fail).replace( 2.0 , Fail).replace( 3.0 , Fail).replace( 5.0 , Fail).replace( 7.0 , Fail).replace( 4.0 , Fail) filter_list = .astype( str ) filter_list.append( '' .join( list (array))) filter_list.append( 'END MAP' ) for t in range (n_star , n_end , 1 ): merged_str = '' for raw , filter in zip (raw_list , filter_list ): if filter == Fail: merged_str += filter else : merged_str += raw raw_list = merged_str + ' \n ' new_failure_count = 0 nof_die = 0 for t in range (n_star , n_end- 1 ): new_failure_count += raw_list .count(Fail) nof_die += raw_list .count(Good)+raw_list .count(Fail) raw_list = 'Failed Die(X) : {}' .format(new_failure_count) + ' \n ' raw_list = 'CP Good Die(.) : {}' .format(nof_die-new_failure_count)+ ' \n ' raw_list = 'CP Good Die(.) : {}' .format(nof_die-new_failure_count) with open (map_file_path , 'w' ) as wr_new: for l in raw_list: wr_new.write(l) output_folder = os.path.join(folder , 'newformat.csv' ) rawdata.to_csv(output_folder , index = False, encoding = "utf-8_sig" ) messagebox.showinfo( 'Status' , 'Map & 数据已成功导出 ' ) else : messagebox.showwarning( ' 注意 ' , 'columns not match,please check rawdata' )
  • 热度 3
    2023-10-23 10:18
    59 次阅读|
    0 个评论
    import pandas as pd import re import os from tkinter import messagebox #------------------------- update foder path---------------------- folder = r'D:\ 联电自研 \IGBT HH\MAP\ENEPIG_DOE5\FA37-9341@202\trial' rawdata_name= 'rawdataTrans.csv' #------------------------- update foder path---------------------- #------------------------- update filter spec path---------------------- spec_path = r'D:\ 联电自研 \IGBT HH\MAP\ENEPIG_DOE5\spec_filter.csv' #------------------------- update foder path---------------------------- Good = '.' Fail = 'X' wafer_column_name = 'WAFER' Xcord_column = 'X' Ycord_column = 'Y' Filter = 'Filter' file_path =os.path.join(folder , rawdata_name) rawdata = pd.read_csv(file_path , encoding = "utf-8" ) CP_SPC = pd.read_csv(spec_path , index_col = , encoding = "utf-8" ) column_list = list (rawdata.columns) if True : rawdata = 0 for row_index in rawdata.index: for column_index_key in CP_SPC.index: try : if rawdata.loc < CP_SPC.loc or \ rawdata.loc > CP_SPC.loc or \ pd.isna(rawdata.loc ): rawdata.loc = CP_SPC.loc break else : continue except KeyError : continue def caculate_CP_bin (rawdata , split , key , bin , BIN): if rawdata == key) & (rawdata == bin)] is not None : bin_rate = rawdata == key) & (rawdata == bin)] .size / \ rawdata == key] .size else : bin_rate = 0 return bin_rate waferlist = sorted (rawdata .unique()) bin0 = bin1 = bin2 = bin3 = bin4 = bin5 = for Yield_wafer_number in waferlist: bin0.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 0 , BIN = 'BIN' )) bin0_2.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 0 , BIN =Filter)) bin1.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 1 , BIN = 'BIN' )) bin1_2.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 1 , BIN =Filter)) bin2.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 2 , BIN = 'BIN' )) bin2_2.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 2 , BIN =Filter)) bin3.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 3 , BIN = 'BIN' )) bin3_2.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 3 , BIN =Filter)) bin4.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 4 , BIN = 'BIN' )) bin4_2.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 4 , BIN =Filter)) bin5.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 5 , BIN = 'BIN' )) bin5_2.append(caculate_CP_bin(rawdata , split =wafer_column_name , key =Yield_wafer_number , bin = 5 , BIN =Filter)) yield_key2 = { 'WAFER' : waferlist , 'Yield' : bin0 , 'IGES_Fail' : bin1 , 'ICES_Fail' : bin2 , 'VTH_Fail' : bin3 , 'Delta_Vth fail' : bin4 , 'VCESAT_Fail' : bin5 , 'Yield_filter' : bin0_2 , 'IGES_Fail_filter' : bin1_2 , 'ICES_Fail_filter' : bin2_2 , 'VTH_Fail_filter' : bin3_2 , 'Delta_Vth fail_filter' : bin4_2 , 'VCESAT_Fail_filter' : bin5_2} Yield_key_table2 = pd.DataFrame(yield_key2) yieldTAB = os.path.join(folder , 'yield for compare.csv' ) Yield_key_table2.to_csv(yieldTAB , index = False ) map_file_names = for map_file_name in map_file_names: map_file_path = os.path.join(folder , map_file_name) wafer= int (map_file_name ) with open (map_file_path) as f: raw_list = f.readlines() Map_tables = rawdata == wafer].pivot_table( index =Ycord_column , columns =Xcord_column , values =Filter) new = Map_tables.fillna( ' ' ).replace( 0.0 , Good).replace( 1.0 , Fail).replace( 2.0 , Fail).replace( 3.0 , Fail).replace( 5.0 , Fail).replace( 7.0 , Fail).replace( 4.0 , Fail) filter_list = .astype( str ) filter_list.append( '' .join( list (array))) filter_list.append( 'END MAP' ) n_star = 10 n_end = 29 for t in range (n_star , n_end , 1 ): merged_str = '' for raw , filter in zip (raw_list , filter_list ): if filter== Fail: merged_str += filter else : merged_str += raw raw_list = merged_str + ' \n ' new_failure_count = 0 nof_die = 0 for t in range (n_star , n_end- 1 ): new_failure_count += raw_list .count(Fail) nof_die += raw_list .count(Good)+raw_list .count(Fail) raw_list = 'Failed Die(X) : {}' .format(new_failure_count) + ' \n ' raw_list = 'CP Good Die(.) : {}' .format(nof_die-new_failure_count)+ ' \n ' raw_list = 'CP Good Die(.) : {}' .format(nof_die-new_failure_count) with open (map_file_path , 'w' ) as wr_new: for l in raw_list: wr_new.write(l) output_folder = os.path.join(folder , 'newformat.csv' ) rawdata.to_csv(output_folder , index = False, encoding = "utf-8_sig" ) messagebox.showinfo( 'Status' , 'Map & 数据已成功导出 ' ) else : messagebox.showwarning( ' 注意 ' , 'columns not match,please check rawdata' )
相关资源
  • 所需E币: 5
    时间: 2024-3-24 22:26
    大小: 17.42MB
    上传者: 电子阔少
    Python编程快速上手.pdf
  • 所需E币: 5
    时间: 2024-3-24 22:28
    大小: 26.17MB
    上传者: 电子阔少
    python网络-编程基础.pdf
  • 所需E币: 0
    时间: 2024-1-5 14:07
    大小: 3.13KB
    Django是一个由Python编写的一个开放源代码的Web应用框架。Django是一个高级的PythonWeb框架,用于快速开发可维护和可扩展的Web应用程序。使用Django,只要很少的代码,Python的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的Web服务。第一步,安装PythonWindows下安装Python非常简单,去Python官方网站找到Python3的下载地址,根据你的系统选择32位或者64位的安装包,下载好后双击安装即可。第二步,安装django强烈推荐在虚拟环境下进行django的开发。虚拟环境是一种Python工具,使用它可以创建一个独立的Python环境第三步,virtualenv创建和管理虚拟环境virtualenv的使用非常简单,首先安装virtualenv,打开命令行工具,输入下面的命令即可安装第四步,Django框架的View视图展示机制Django框架采用了MTV设计模式,在工作机制上自然也有些特别之处,其中最显著的就是V视图(View)部分。请读者再看一下图2中的描述,MTV模式中的V视图(View)是不负责处理用户输入的,这一点就是MTV模式特殊之处。第五步,Django框架的用户操作流程Django框架设计的MTV模式也是基于传统的MVC模式的,本质上也是为了各组件之间保持松耦合关系,只是定义上有些许不同。MVC模式之所以能够成为Web框架最流行的设计标准,也是因为其比较完美地契合了用户的操作流程。MVC模式是软件工程中的一种通用的软件架构模式,同样也适用于Web应用程序。MVC将Web框架分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),并以一种插件式的、松耦合的方式连接在一起。第六步,Django框架的主要特点这里给大家介绍Django框架的主要特点,其他一些小优点,读者在学习过程中会慢慢体会:基于Python语言及MVC模式,具有开发快捷、低耦合、部署方便、可重用性高和维护成本低等显著特点。通过一个URL分发器模块进行URL分派,分发器使用正则表达式来匹配URL,支持开发人员采用自定义URL方式,且没有框架的特定限定,使用起来非常灵活。可以方便地生成各种表单模型,实现表单的有效性检验,且支持从自定义的模型实例生成相应的表单。具有强大且可扩展的模板语言,支持分隔设计、内容和Python代码,并且具有可继承性。以Python类的形式定义数据模型,通过ORM(对象关系映射)将模型与关系数据库进行连接,开发人员将得到一个非常容易使用的数据库API,同时也支持在Django框架中直接使用原始SQL语句。内置国际化系统,支持开发多种语言的Web网站。缓存系统采用与memcached、Redis等缓存系统联用的方式,提高了页面的加载速度。内置了一个可视化的、自动化管理员界面(AdminSite),其类似于一个CMS系统(内容管理系统),开发人员可以方便快捷地通过该界面进行人员管理和内容更新等操作。第七步,创建Django项目安装了Django之后,我们就可以使用Django的管理工具------>django-admin了我们创建一个名称为loginweb的Django项目,命令如下:#1激活虚拟环境cdD:\djangotestdjangoenv\Scripts\activate#2创建一个loginweb的项目django-adminstartprojectloginweb或者python-mdjangostartprojectloginweb一般一个项目包含多个app应用程序(当然,通用的app也可以在多个项目中使用)下面我们为loginweb项目,创建login#1激活虚拟环境cdD:\djangotestdjangoenv\Scripts\activate#2切到django项目中cdloginweb#3创建一个叫login的应用django-adminstartapplogin在com.example.emos.wx.config.shiro中创建ThreadLocalToken类。packagecom.example.emos.wx.config.shiro;importorg.springframework.stereotype.Component;@ComponentpublicclassThreadLocalToken{  privateThreadLocallocal=newThreadLocal();  publicvoidsetToken(Stringtoken){    local.set(token);  }  publicStringgetToken(){    return(String)local.get();  }  publicvoidclear(){    local.remove();  }}之前我们测试sayHello()方法的时候,因为客户端提交的参数不正确,所以后端系统向客户端返回了大量的异常内容。这里我们要对返回的异常内容做一下精简。在com.example.emos.wx.config中,创建ExceptionAdvice类。packagecom.example.emos.wx.config;importcom.example.emos.wx.exception.EmosException;importlombok.extern.slf4j.Slf4j;importorg.springframework.http.HttpStatus;importorg.springframework.web.bind.MethodArgumentNotValidException;importorg.springframework.web.bind.annotation.ExceptionHandler;importorg.springframework.web.bind.annotation.ResponseBody;importorg.springframework.web.bind.annotation.ResponseStatus;importorg.springframework.web.bind.annotation.RestControllerAdvice;@Slf4j@RestControllerAdvicepublicclassExceptionAdvice{  @ResponseBody  @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)  @ExceptionHandler(Exception.class)  publicStringvalidExceptionHandler(Exceptione){    log.error("执行异常",e);    if(einstanceofMethodArgumentNotValidException){      MethodArgumentNotValidExceptionexception=(MethodArgumentNotValidException)e;      //将错误信息返回给前台      returnexception.getBindingResult().getFieldError().getDefaultMessage();    }    elseif(einstanceofEmosException){      EmosExceptionexception=(EmosException)e;      returnexception.getMsg();    }    elseif(einstanceofUnauthorizedException){      return"你不具有相关权限";    }    else{      return"后端执行异常";    }  }}本文到处结束,感谢大家的阅读,有不足的地方大家多多指正!!
  • 所需E币: 0
    时间: 2023-9-19 10:01
    大小: 2.01KB
    上传者: 开心就很好了
    Python多领域场景实战课快速成为多面手2023,完结22章,理论+实战相结合,融合5大领域(如办公自动化、数据分析、爬虫、人工智能、Web开发)Python多领域场景实战课快速成为多面手,Python是一种动态的、高级的、免费的开源解释型编程语言,它支持面向对象以及面向过程的程序设计,应用非常广泛。那么Python能做什么?下面来看下Python的主要用途介绍。1、Web开发Python可以利用简单的代码来构建一个漂亮而实用的网站,它有庞大的库和模块,如HTTP、XML、JSON、IMAP、POP、FTP等。这些有助于数据库存储、内容管理以及与互联网协议的接口。Python还集成了一些框架,比如Django、Flask、Pyramid和Bottle等。此外,它还附带了像BeautifulSoup、TwistedPython、Feedparser等包。所以使用Python来进行Web开发,会非常便捷。例如,您可以在美国服务器上安装Python,并用它来搭建网站。2、人工智能和机器学习很多AI和ML模型都是用Python搭建的,数据分析师也使用它来分析复杂的数据。这主要因为Python具有诸多可用的工具和库,比如:用于数据处理和分析的Pandas工具集用于数学计算的NumPy和SciPy库可视化库Seaborn和Matplotlib机器学习算法库,如Scikitlearn、TensorFlow和Keras等3、游戏开发Python编程语言的一个有趣的应用是构建游戏,如抓蛋游戏、贪吃蛇游戏等。Python附带了Pygame和Pykyra这样的包来构建游戏,它促进了具有各自库的3D游戏的开发,也用于许多游戏引擎中的脚本编写。4、桌面GUI开发Python的简单性和跨平台性使它成为GUI应用程序的良好选择。虽然Tkinter是GUI开发的标准库,但还有其他支持库5、Python爬虫爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序。从技术层面来说就是通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据(图片、视频)爬到本地,进而提取自己需要的数据,存放起来使用。6、Python数据分析在使用Python进行数据分析之前,我们需要遵循以下步骤:获取数据:数据可以来自各种来源,例如CSV文件、数据库、WebAPI或其他数据集。清洗数据:清洗数据是将数据转换为可用于分析的格式的过程。这可能包括删除重复项、填充缺失值、转换数据类型等。探索性数据分析(EDA):EDA是探索数据以获取有关数据集的见解的过程。这包括绘制直方图、箱线图、散点图等。数据建模:在进行数据建模之前,我们需要进一步清洗数据,并将其转换为机器学习算法可以理解的格式。然后,我们可以应用机器学习算法进行预测、分类等操作。评估模型:我们需要使用各种指标(例如准确率、召回率等)评估模型的性能。
  • 所需E币: 0
    时间: 2023-9-19 12:09
    大小: 1.71KB
    [完结22章]Python多领域场景实战课快速成为多面手,Python在各个编程语言中比较适合新手学习,Python解释器易于扩展,可以使用C、C++或其他可以通过C调用的语言扩展新的功能和数据类型。Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。python的主要用途有:1、web开发;2、网络爬虫;3、数据科学;4、自动化运维;5、数据库编程;6、网络编程;7、图形处理、数学处理、文本处理;8、多媒体应用。Python是一种广泛使用的高级编程语言,具有易读性、扩展性和多用途性。特别是在数据分析领域,Python提供了如Pandas、NumPy等多种库,这些工具不仅方便了数据清洗和预处理,还能进行高级数据分析和可视化。那开发网站需要用到哪些知识呢?1、python基础,因为用python开发的,所以python指定要会,最起码你也得会条件判断,循环,函数,类这些知识;2、html、css的基础知识,因为要开发网站,网页都html和css写的,最起码这些知识你得会,就算不会写前端,开发不出来特别漂亮的页面,网站,最起码要能看懂html标签是;3、数据库基础知识,因为开发一个网站的话,数据存在哪里,就是在数据库里,那你最起码要会数据库的增删改查吧,要不然怎么存数据,取数据呢  上面这些知识会的话,开发一个简单的小站就没有问题了,如果想开发比较大型的网站,业务逻辑比较复杂的,那就得用到其他的知识了,比如说redis、MQ等等。Python语言优点介绍(1)语法简洁而清晰,代码的可读性高。Python的语法要求强制缩进,用这种强制缩进来体现语句间的逻辑关系,显著提高了程序的可读性。(2)开发效率高。由于它简单明确,所以它也是开发效率比较高的一种编程语言。(3)跨平台特性。Python可以真正做到跨平台,比如我们开发的程序可以运行在Windows、Linux、MacOS系统下。这是它的可移植性优势。(4)大量丰富的库或扩展。Python常常被昵称为胶水语言,它能够很轻松地把用其他语言编写的各种模块(尤其是C/C++)轻松地联结在一起。(5)代码量少,一定程度上提高了软件质量。由于使用Python语言编写的代码量相比别的语言来说小很多,所以说,它出错的概率也要小很多,这在一定程度上也提高了编写的软件的质量。
  • 所需E币: 0
    时间: 2023-8-2 14:19
    大小: 1.34KB
    上传者: 开心就很好了
    《Python多领域场景实战课快速成为多面手》理论+实战相结合,融合5大领域(如办公自动化、数据分析、爬虫、人工智能、Web开发)1、python办公自动化Python可以用于实现自动化办公Q,以下是一些常见的应用场景和实现方法1.自动化数据处理2.自动化文档3.自动化邮件发送4.自动化网页操作5.自动化任务调度2、python数据分析数据分析是通过明确分析目的,梳理并确定分析逻辑,针对性的收集、整理数据,并采用统计、挖掘技术分析,提取有用信息和展示结论的过程,是数据科学领域的核心技能。3、python爬虫爬虫流程:①urllib的request打开url带到网页的html文档②浏览器打开网页源代码分析元素节点③通过BeautifulSoup或者正则表达式提取想要的数据④存储数据到本地磁盘或者数据库,进行数据分析4、python人工智能人工智能(AI)已成为当今世界的热门话题,它的应用范围越来越广泛。其中,Python成为AI开发中最受欢迎的编程语言之一。Python提供了许多功能强大的库和框架,大大简化了开发人员的工作。5、pythonWeb开发使用Python进行Web开发的步骤可以分为以下几个部分:①选择Web框架:Web框架是用于简化Web开发的工具,Python有很多优秀的Web框架可以选择,如Django、Flask、Tornado等。②安装Web框架:选择适合自己的Web框架后,需要安装对应的框架包。可以使用类似pip的包管理器进行安装。③创建Web应用程序:创建自己的Web应用程序,可以在Web框架中创建一个基本Web应用程序。④定义路由:定义应用程序中的每个URL及其操作。通常这些操作被定义为函数
  • 所需E币: 0
    时间: 2023-8-2 15:18
    大小: 1.41KB
    《Python多领域场景实战课快速成为多面手》视频教程+源码+PDF课件下载如今,Python已然成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。然而,有一个问题始终摆在许多零基础学习者面前:Python怎么学习呢?虽然Python语法简单,被认为是最好学的编程语言,但是计算机小白想要学习,也有不小的难度。1.为什么要学习Python?在学习Python之前,你不要担心自己没基础或“脑子笨”,我始终认为,只要你想学并为之努力,就能学好,就能用Python去做很多事情。在这个喧嚣的时代,很多技术或概念会不断兴起,我希望你能沉下心来去学习,不要急于求成,一步一个脚印。当你把某个技术学好、学精后,还是能做一些事情的,甚至能找到喜欢的工作或完成实践项目。在学习Python的过程中,首先就得想明白3个问题,我会就这3个问题给大家具体分析高效解决的方式1、学习python,要解决什么问题?2、学完Python你想做什么?如何规划自己的学习路径3、要学哪些东西?首先通过介绍不同领域的三种操作系统,操作系统的发展简史以及Linux系统的文件目录结构让大家对Linux系统有一个简单的认识,同时知道为什么要学习Linux命令。然后我们会正式学习Linux命令文件和目录命令:ls,cd,touch,mkdir,rm拷贝和移动命令:tree,cp,mv文件内容命令:cat,more,grep远程管理命令:ifconfig,ping,SSH的工作方式简介以及ssh命令用户权限及用户管理命令:chmod,chgrp,useradd,passwd,userdel软件安装及压缩命令:apt简介及命令,tar,gzip压缩命令,bzip2压缩命令vim的基本使用其次就是项目实战
  • 所需E币: 0
    时间: 2023-7-28 16:15
    大小: 1.21KB
    上传者: 蝴蝶结欧恩
    分享一套课程——Python多领域场景实战课快速成为多面手,课程包更新,提供源码+PDF课件。本课程理论+实战相结合,融合5大领域(如办公自动化、数据分析、爬虫、人工智能、Web开发),12个梯度渐近的项目训练,融入学习的坑和开发经验,培养良好的开发编程思维,让你从0到1快速入门与多领域实战,逐步提升能力,成为python多面手,提高工作效率和职业竞争力。课程收获:1.从0到1快速成为Python多面手2.提升5大领域视野&实践能力3.大幅提升12大场景工作效能4.获得丰富的案例开发经验5.培养多领域编程思维与规范6.获得更多职业竞争力和选择权
  • 所需E币: 1
    时间: 2023-7-14 17:25
    大小: 3.42MB
    上传者: 张红川
    《NaturalLanguageProcessingwithPython》.pdf
  • 所需E币: 3
    时间: 2023-7-14 17:28
    大小: 1.62MB
    上传者: 张红川
    《笨办法学Python·续》.pdf
  • 所需E币: 3
    时间: 2023-7-16 15:52
    大小: 64.7MB
    上传者: 电子阔少
    一个非常值得拥有的学习Python的学习资料,Python核心编程(第二版).pdf
  • 所需E币: 2
    时间: 2023-7-1 20:51
    大小: 1.48MB
    上传者: Argent
    Python绝技中文版
  • 所需E币: 2
    时间: 2023-7-1 20:54
    大小: 198.93MB
    上传者: Argent
    Python密码学编程
  • 所需E币: 2
    时间: 2023-7-1 20:57
    大小: 44.06MB
    上传者: Argent
    Selenium2自动化测试实战Python
  • 所需E币: 2
    时间: 2023-7-1 20:56
    大小: 125.84MB
    上传者: Argent
    Python算法教程
  • 所需E币: 2
    时间: 2023-7-1 20:51
    大小: 87.85MB
    上传者: Argent
    Python和Pygame游戏开发指南
  • 所需E币: 1
    时间: 2023-7-1 20:34
    大小: 105.4MB
    上传者: Argent
    《Python爬虫开发与项目实战》
  • 所需E币: 2
    时间: 2023-7-1 20:35
    大小: 18.83MB
    上传者: Argent
    Python编程+从入门到实践
  • 所需E币: 2
    时间: 2023-7-1 20:46
    大小: 225.95MB
    上传者: Argent
    PYTHON编程第4版下
  • 所需E币: 3
    时间: 2023-7-1 20:48
    大小: 13.87MB
    上传者: Argent
    Python编程快速上手让繁琐工作自动化