系列文章目录
前言
一、批量解压
文件夹格式
解压后
二、Summary
遍历指定路径下所有满足条件的csv文件,并按需求将其指定区域数据汇总到一个sheet;
1.源码
代码如下(示例):
#xlwt只支持xls格式,xlsx格式需要用openpyxl或pandas
# -*- coding: utf-8 -*-
# coding=gbk
import pandas as pd
import os
import xlrd
import xlwt
import csv
from xlutils.copy import copy
from openpyxl import Workbook
from openpyxl import load_workbook
from os.path import dirname
from decimal import Decimal
from openpyxl.utils.dataframe import dataframe_to_rows
# 读写2007 excel
import openpyxl
from openpyxl.styles import numbers
from openpyxl.styles import Alignment
import glob
def some_function():
global global_var
global global_var_r
global_var = col1
global_var_r = row1
def get_allfile_msg(file_dir):
for root, dirs, files in os.walk(file_dir):
return root, dirs, [file for file in files if file.endswith('.xls') or file.endswith('.xlsx') or file.endswith('.csv')]
def get_allfile_url(root, files):
allFile_url = []
for file_name in files:
file_url = root + "/" + file_name
allFile_url.append(file_url)
return allFile_url
def get_file_name(path, suffix = ['.xlsx', '.xls','.csv']): #'.xlsx', '.xls',
tmp_lst = []
for root,dirs,files in os.walk(path):
for file in files:
tmp_lst.append(os.path.join(root, file))
return tmp_lst
def convert_csv_to_xlsx(csv_file_path,xlsx_file_path):
df = pd.read_csv(csv_file_path)
df.to_excel(xlsx_file_path,index=False)
#定义读取csv_pandas
def read_csv_file(file_path):
#参数:error_bad_lines=False跳过错误的行 delimiter=',',encoding = 'gbk',header = 0, engine='python' sep = r"\s+\s{0}" encoding = "iso-8859-1"
return pd.read_csv(file_path,encoding = 'latin1',sep = r"\s+\s{0}",dtype=object,quotechar="'",delimiter=',',doublequote=True,engine="python",header = 1) #第2行作为表头
#定义一个函数来尝试将字符串转换为十进制数字
def try_convert_to_decimal(value):
try:
return Decimal(value)
except (TypeError, DecimalException):
return None
#定义csv求和
def sum_csv_column(filename,column_index):
total = 0
with open(filename, mode='r', newline='') as csvfile: #mode = 'r'
csvreader = csv.DictReader(csvfile, delimiter=",")
headers = next(csvreader) #跳过标题行
for row in csvreader:
if len(row) > column_index : #and row[column_index].isdigit()
total += int(row[column_index])
return total
def calculate_sum_in_csv(file_path,row_start,row_end,col_start,col_end):
df = pd.read_csv(file_path ,encoding='utf-8')
subset = df.iloc[row_start:row_end,col_start:col_end]
return subset.sum().sum()
def get_top_nine_dirs(file_path):
#分割路径并移除文件名
parts = file_path.split(os.path.sep)
#获取前9级目录
#top_nine_dirs = os.path.sep.join(parts[:9])
#获取第9级目录
top_nine_dirs = os.path.sep.join(parts[8])
return top_nine_dirs
def get_nth_directory_name(file_path,n):
#将路径分割成单个目录
directories = file_path.split(os.path.sep)
if len(directories) < n:
return None
return directories[n - 1]
def extract_last_part_of_path(path):
return os.path.basename(path)
def is_number(string):
try:
Decimal(string) #尝试将字符串转换为数字
return True
except DecimalError:
return False
#查找并输出位置
def search_str(filename,search_char):
global global_var #将读取的函数计算结果设置为全局变量,我们可以先定义全局变量,然后在函数内部通过全局变量声明修改
global global_var_r
result = []
character = "1S"
total = 0
try:
with open(filename,'r') as csvfile:
csvreader = csv.reader(csvfile, delimiter=",")
row_index = 1
for row in csvreader:
col_index = 1
for cell in row:
if character == cell:
result.append((row_index,col_index))
print(result)
print(f"Cell data:{cell},Row index:{row_index},Column index:{col_index}")
print('已查到该值',cell)
for row1,col1 in result:
data_row = list(csvreader)
num_rows = len(data_row)
print(f'"{character}"在第{row1}行,第{col1}列被找到')
print(f'总行数:"{num_rows}"')
global_var = col1
global_var_r = row1 - 2
col_index += 1
row_index += 1
except:
pass
if __name__ == '__main__':
#新建excel,自定义标题
#*********************************************************************
wb = Workbook()
ws = wb.active
ws.title="Summary"
#设置所有单元格的对齐方式为居中
alignment = Alignment(horizontal='center',vertical='center')
titlesS1 = ['data1','data2','data3']
titlesS2 = ['data4','data5','data6']
#第一列波段设置区域
ws.cell(row = 1,column = 1).value = '判定'
ws.cell(row = 1,column = 1).alignment = alignment
ws.cell(row = 5,column = 1).value = '文件名'
ws.cell(row = 5,column = 1).alignment = alignment
ws.cell(row = 6,column = 1).value = 'wave'
ws.cell(row = 6,column = 1).alignment = alignment
for l in range(380,1051):
ws.cell(l-373,1).value = l
ws.cell(l-373,1).alignment = alignment
continue
#*****************************************************************
#读取指定文件夹
#file_dir = os.getcwd()
file_dir = r"D:\Users\gxcaoty\Desktop\vivo客户数据\901NG"
root, dirs, files = get_allfile_msg(file_dir)
allFile_url = get_allfile_url(root, files)
dir_numbers = len(dirs) #file_dir下的文件夹个数
user_input = input("请输入S1或S2\n")
count = 0
files_chose = []
try:
for root,dirs,files in os.walk(file_dir):
for file_path in glob.glob(os.path.join(root,'*.csv')):
if '39781A-901' in file_path and 'Add' not in file_path:
print(file_path)
count += 1
c = count
m = c - 1
#print(m)
files_chose.append(file_path)
#print(files_chose)
for xl in files_chose:
#print(xl) #xl为路径+文件名
last_part = extract_last_part_of_path(xl)
#print(last_part) #filename为文件名
filename = xl
csv_data = read_csv_file(filename)
df = csv_data
if user_input == "S1":
df = df.iloc[:,1:4]
df = df.astype(float)
#print(df)
#反射率标准
#**********************************************************
wave1start = 430
wave1end = 550
wave1standard = 1.5
wave2start = 600
wave2end = 780
wave2standard = 1
combinedwave1 = f'{wave1start},{wave1end},{wave1standard}'
combinedwave2 = f'{wave2start},{wave2end},{wave2standard}'
#print(combinedwave1)
ws.cell(row = 2,column = 1).value = combinedwave1
ws.cell(row = 3,column = 1).value = combinedwave2
#***********************************************************
#计算判定区域
for n in range(0,3):
cal1 = df.iloc[wave1start-380+2:wave1end-380+2,n].max()
cal2 = df.iloc[wave2start-380+2:wave2end-380+2,n].max()
if cal1 <= wave1standard and cal2 <= wave2standard :
ws.cell(row = 1,column = n+2+3*m).value = "OK"
ws.cell(row = 1,column = n+2+3*m).alignment = alignment
else:
ws.cell(row = 1,column = n+2+3*m).value = "NG"
ws.cell(row = 1,column = n+2+3*m).alignment = alignment
#print(ave1,ave2)
ws.cell(row = 2,column = n+2+3*m).value = cal1
ws.cell(row = 3,column = n+2+3*m).value = cal2
continue
#文件名输出区域
ws.cell(row = 5,column = 2+3*m).value = last_part
#标题输出区域(data1~data6)
for k,title in enumerate(titlesS1,2):
ws.cell(row = 6,column = k+3*m).value = title
ws.cell(row = 6,column = k+3*m).alignment = alignment
continue
#源数据输出区域
for i ,row in df.iterrows():
#print(i)
for j ,value in enumerate(row,start=1):
ws.cell(row = i+7,column = j+1+3*m).value = value
elif user_input == "S2":
df = df.iloc[:,4:7]
df = df.astype(float)
print(df)
#反射率标准
#**********************************************************
wave1start = 430
wave1end = 550
wave1standard = 1.5
wave2start = 600
wave2end = 780
wave2standard = 1
combinedwave1 = f'{wave1start},{wave1end},{wave1standard}'
combinedwave2 = f'{wave2start},{wave2end},{wave2standard}'
#print(combinedwave1)
ws.cell(row = 2,column = 1).value = combinedwave1
ws.cell(row = 3,column = 1).value = combinedwave2
#***********************************************************
#计算判定区域
for n in range(0,3):
cal1 = df.iloc[wave1start-380+2:wave1end-380+2,n].max()
cal2 = df.iloc[wave2start-380+2:wave2end-380+2,n].max()
if cal1 <= wave1standard and cal2 <= wave2standard :
ws.cell(row = 1,column = n+2+3*m).value = "OK"
ws.cell(row = 1,column = n+2+3*m).alignment = alignment
else:
ws.cell(row = 1,column = n+2+3*m).value = "NG"
ws.cell(row = 1,column = n+2+3*m).alignment = alignment
#print(ave1,ave2)
ws.cell(row = 2,column = n+2+3*m).value = cal1
ws.cell(row = 3,column = n+2+3*m).value = cal2
continue
#文件名输出区域
ws.cell(row = 5,column = 2+3*m).value = last_part
#标题输出区域(data1~data6)
for k,title in enumerate(titlesS2,2):
ws.cell(row = 6,column = k+3*m).value = title
ws.cell(row = 6,column = k+3*m).alignment = alignment
continue
#源数据输出区域
for i ,row in df.iterrows():
#print(i)
for j ,value in enumerate(row,start=1):
ws.cell(row = i+7,column = j+1+3*m).value = value
else:
print("非指定指令")
except Exception as e:
print(e)
output_file_path='Summaryout.xlsx'
wb.save(output_file_path)
2.优化(时间复杂度)
代码如下(示例):
#xlwt只支持xls格式,xlsx格式需要用openpyxl或pandas
# -*- coding: utf-8 -*-
# coding=gbk
import pandas as pd
import os
import xlrd
import xlwt
import csv
from xlutils.copy import copy
from openpyxl import Workbook
from openpyxl import load_workbook
from os.path import dirname
from decimal import Decimal
from openpyxl.utils.dataframe import dataframe_to_rows
# 读写2007 excel
import openpyxl
from openpyxl.styles import numbers
from openpyxl.styles import Alignment
import glob
import tkinter as tk
from tkinter import messagebox
from tkinter import simpledialog
#自定义函数区域
#************************************************************************************************************************************
def some_function():
global global_var
global global_var_r
global_var = col1
global_var_r = row1
def get_allfile_msg(file_dir):
for root, dirs, files in os.walk(file_dir):
return root, dirs, [file for file in files if file.endswith('.xls') or file.endswith('.xlsx') or file.endswith('.csv')]
def get_allfile_url(root, files):
allFile_url = []
for file_name in files:
file_url = root + "/" + file_name
allFile_url.append(file_url)
return allFile_url
def get_file_name(path, suffix = ['.xlsx', '.xls','.csv']): #'.xlsx', '.xls',
tmp_lst = []
for root,dirs,files in os.walk(path):
for file in files:
tmp_lst.append(os.path.join(root, file))
return tmp_lst
def convert_csv_to_xlsx(csv_file_path,xlsx_file_path):
df = pd.read_csv(csv_file_path)
df.to_excel(xlsx_file_path,index=False)
#定义读取csv_pandas
def read_csv_file(file_path):
#参数:error_bad_lines=False跳过错误的行 delimiter=',',encoding = 'gbk',header = 0, engine='python' sep = r"\s+\s{0}" encoding = "iso-8859-1"
return pd.read_csv(file_path,encoding = 'latin1',sep = r"\s+\s{0}",dtype=object,quotechar="'",delimiter=',',doublequote=True,engine="python",header = 1) #第2行作为表头
#定义一个函数来尝试将字符串转换为十进制数字
def try_convert_to_decimal(value):
try:
return Decimal(value)
except (TypeError, DecimalException):
return None
#定义csv求和
def sum_csv_column(filename,column_index):
total = 0
with open(filename, mode='r', newline='') as csvfile: #mode = 'r'
csvreader = csv.DictReader(csvfile, delimiter=",")
headers = next(csvreader) #跳过标题行
for row in csvreader:
if len(row) > column_index : #and row[column_index].isdigit()
total += int(row[column_index])
return total
def calculate_sum_in_csv(file_path,row_start,row_end,col_start,col_end):
df = pd.read_csv(file_path ,encoding='utf-8')
subset = df.iloc[row_start:row_end,col_start:col_end]
return subset.sum().sum()
def get_top_nine_dirs(file_path):
#分割路径并移除文件名
parts = file_path.split(os.path.sep)
#获取前9级目录
#top_nine_dirs = os.path.sep.join(parts[:9])
#获取第9级目录
top_nine_dirs = os.path.sep.join(parts[8])
return top_nine_dirs
def get_nth_directory_name(file_path,n):
#将路径分割成单个目录
directories = file_path.split(os.path.sep)
if len(directories) < n:
return None
return directories[n - 1]
def extract_last_part_of_path(path):
return os.path.basename(path)
def is_number(string):
try:
Decimal(string) #尝试将字符串转换为数字
return True
except DecimalError:
return False
#查找并输出位置
def search_str(filename,search_char):
global global_var #将读取的函数计算结果设置为全局变量,我们可以先定义全局变量,然后在函数内部通过全局变量声明修改
global global_var_r
result = []
character = "1S"
total = 0
try:
with open(filename,'r') as csvfile:
csvreader = csv.reader(csvfile, delimiter=",")
row_index = 1
for row in csvreader:
col_index = 1
for cell in row:
if character == cell:
result.append((row_index,col_index))
print(result)
print(f"Cell data:{cell},Row index:{row_index},Column index:{col_index}")
print('已查到该值',cell)
for row1,col1 in result:
data_row = list(csvreader)
num_rows = len(data_row)
print(f'"{character}"在第{row1}行,第{col1}列被找到')
print(f'总行数:"{num_rows}"')
global_var = col1
global_var_r = row1 - 2
col_index += 1
row_index += 1
except:
pass
#自定义函数区域end*****************************************************************************************************************
if __name__ == '__main__':
#新建excel,自定义标题start*********************************************************************
wb = Workbook()
ws = wb.active
ws.title="Summary"
#设置所有单元格的对齐方式为居中
alignment = Alignment(horizontal='center',vertical='center')
titlesS1 = ['data1','data2','data3']
titlesS2 = ['data4','data5','data6']
#第一列波段设置区域
ws.cell(row = 1,column = 1).value = '判定'
ws.cell(row = 1,column = 1).alignment = alignment
ws.cell(row = 5,column = 1).value = '文件名'
ws.cell(row = 5,column = 1).alignment = alignment
ws.cell(row = 6,column = 1).value = 'wave'
ws.cell(row = 6,column = 1).alignment = alignment
for l in range(380,1051):
ws.cell(l-373,1).value = l
ws.cell(l-373,1).alignment = alignment
continue
#*****************************************************************
#读取指定文件夹
#file_dir = os.getcwd()
file_dir = r"D:\Users\gxcaoty\Desktop\vivo客户数据\test1"
root, dirs, files = get_allfile_msg(file_dir)
allFile_url = get_allfile_url(root, files)
dir_numbers = len(dirs) #file_dir下的文件夹个数
user_input = input("请输入S1或S2\n")
count = 0
for root,dirs,files in os.walk(file_dir):
for file_path in glob.glob(os.path.join(root,'*.csv')):
if '39781A-901' in file_path and 'Add' not in file_path:
print(file_path)
xl = file_path
count += 1
c = count
m = c - 1
print(f"共发现 {m} 个文件!")
#print(files_chose)
try:
last_part = extract_last_part_of_path(xl)
#print(last_part) #filename为文件名
filename = xl
csv_data = read_csv_file(filename)
df = csv_data
if user_input == "S1":
df = df.iloc[:,1:4]
df = df.astype(float)
#print(df)
#反射率标准
#**********************************************************
wave1start = 430
wave1end = 550
wave1standard = 1.5
wave2start = 600
wave2end = 780
wave2standard = 1
combinedwave1 = f'{wave1start},{wave1end},{wave1standard}'
combinedwave2 = f'{wave2start},{wave2end},{wave2standard}'
#print(combinedwave1)
ws.cell(row = 2,column = 1).value = combinedwave1
ws.cell(row = 3,column = 1).value = combinedwave2
#***********************************************************
#计算判定区域
for n in range(0,3):
cal1 = df.iloc[wave1start-380+2:wave1end-380+2,n].max()
cal2 = df.iloc[wave2start-380+2:wave2end-380+2,n].max()
if cal1 <= wave1standard and cal2 <= wave2standard :
ws.cell(row = 1,column = n+2+3*m).value = "OK"
ws.cell(row = 1,column = n+2+3*m).alignment = alignment
else:
ws.cell(row = 1,column = n+2+3*m).value = "NG"
ws.cell(row = 1,column = n+2+3*m).alignment = alignment
#print(ave1,ave2)
ws.cell(row = 2,column = n+2+3*m).value = cal1
ws.cell(row = 3,column = n+2+3*m).value = cal2
continue
#文件名输出区域
ws.cell(row = 5,column = 2+3*m).value = last_part
#标题输出区域(data1~data6)
for k,title in enumerate(titlesS1,2):
ws.cell(row = 6,column = k+3*m).value = title
ws.cell(row = 6,column = k+3*m).alignment = alignment
continue
#源数据输出区域
for i ,row in df.iterrows():
#print(i)
for j ,value in enumerate(row,start=1):
ws.cell(row = i+7,column = j+1+3*m).value = value
elif user_input == "S2":
df = df.iloc[:,4:7]
df = df.astype(float)
#print(df)
#反射率标准
#**********************************************************
wave1start = 430
wave1end = 550
wave1standard = 1.5
wave2start = 600
wave2end = 780
wave2standard = 1
combinedwave1 = f'{wave1start},{wave1end},{wave1standard}'
combinedwave2 = f'{wave2start},{wave2end},{wave2standard}'
#print(combinedwave1)
ws.cell(row = 2,column = 1).value = combinedwave1
ws.cell(row = 3,column = 1).value = combinedwave2
#***********************************************************
#计算判定区域
for n in range(0,3):
cal1 = df.iloc[wave1start-380+2:wave1end-380+2,n].max()
cal2 = df.iloc[wave2start-380+2:wave2end-380+2,n].max()
if cal1 <= wave1standard and cal2 <= wave2standard :
ws.cell(row = 1,column = n+2+3*m).value = "OK"
ws.cell(row = 1,column = n+2+3*m).alignment = alignment
else:
ws.cell(row = 1,column = n+2+3*m).value = "NG"
ws.cell(row = 1,column = n+2+3*m).alignment = alignment
#print(ave1,ave2)
ws.cell(row = 2,column = n+2+3*m).value = cal1
ws.cell(row = 3,column = n+2+3*m).value = cal2
continue
#文件名输出区域
ws.cell(row = 5,column = 2+3*m).value = last_part
#标题输出区域(data1~data6)
for k,title in enumerate(titlesS2,2):
ws.cell(row = 6,column = k+3*m).value = title
ws.cell(row = 6,column = k+3*m).alignment = alignment
continue
#源数据输出区域
for i ,row in df.iterrows():
#print(i)
for j ,value in enumerate(row,start=1):
ws.cell(row = i+7,column = j+1+3*m).value = value
else:
print("非指定指令")
except Exception as e:
print(e)
output_file_path='Summaryout.xlsx'
wb.save(output_file_path)
三、库文件
1.查看已安装的所有库
python3 -m pip list
已安装库如下:
absl-py 1.0.0
altair 4.2.0
altgraph 0.17.2
appdirs 1.4.4
argcomplete 1.12.3
argon2-cffi 21.1.0
asgiref 3.5.2
astor 0.8.1
astroid 2.4.2
astunparse 1.6.3
async-generator 1.10
async-timeout 4.0.2
asynctest 0.13.0
attrs 21.2.0
audioread 2.1.9
Automat 0.7.0
autoreport 0.1.2
Babel 2.9.1
backcall 0.2.0
backports.entry-points-selectable 1.1.1
backports.zoneinfo 0.2.1
baidu-aip 2.2.18.0
bce-python-sdk 0.8.62
beautifulsoup4 4.9.3
Bin 0.1.0
bit-array 0.1.0
bitarray 2.4.1
bleach 4.1.0
blinker 1.4
branca 0.4.2
bs4 0.0.1
cached-property 1.5.2
cachetools 4.2.4
certifi 2021.10.8
cffi 1.15.0
cfgv 3.3.1
chardet 3.0.4
charset-normalizer 2.0.7
circlify 0.13
click 8.0.3
cmake 3.22.2
colorama 0.4.3
colorlog 6.6.0
colorlover 0.3.0
commonmark 0.9.1
comtypes 1.1.10
config 0.5.1
configobj 5.0.6
configparser 5.2.0
constantly 15.1.0
coverage 5.5
Cryptodome 1.0
cryptography 36.0.0
cssselect 1.1.0
cssutils 2.3.0
cufflinks 0.17.3
cx-Oracle 8.3.0
cycler 0.11.0
Cython 0.29.25
dataframe 1.0.0
DBUtils 1.3
debugpy 1.5.1
decorator 4.4.2
defusedxml 0.7.1
Deprecated 1.2.13
deprecation 2.1.0
dill 0.3.4
distlib 0.3.3
Django 2.2a1
dlib 19.19.0
docopt 0.6.2
easydict 1.9
easygooglesearch 0.1.0
easygui 0.98.3
echarts 0.0.0
echarts-china-cities-pypkg 0.0.9
echarts-china-misc-pypkg 0.0.1
echarts-china-provinces-pypkg 0.0.3
echarts-countries-pypkg 0.1.6
einops 0.4.0
entrypoints 0.3
et-xmlfile 1.1.0
exceptiongroup 1.2.1
ExifRead 2.3.2
eyed3 0.9.6
fake-useragent 0.1.11
ffmpeg 1.4
filelock 3.4.0
filetype 1.0.13
fitz 0.0.1.dev2
flake8 4.0.1
Flask 1.0.2
Flask-Babel 2.0.0
Flask-Cors 3.0.7
flatbuffers 2.0
folium 0.12.1.post1
fonttools 4.28.1
freetype-py 2.2.0
frozenlist 1.3.0
fsspec 2022.1.0
future 0.16.0
gast 0.2.2
Genshi 0.7.6
geos 0.2.3
gfpgan 0.2.4 e:\py\python3.7\test\test83\gfpgan-master
gitdb 4.0.9
GitPython 3.1.24
google-auth 2.3.3
google-auth-oauthlib 0.4.6
google-pasta 0.2.0
googlesearch-python 1.1.0
greenlet 1.1.2
grpcio 1.42.0
h11 0.12.0
h5py 3.6.0
himawaripy 2.2.0
httplib2 0.20.4
hyperlink 18.0.0
ibm-db 3.1.1
identify 2.4.0
idna 2.8
imageio 2.16.0
imageio-ffmpeg 0.4.7
impala 0.2
importlib-metadata 4.8.2
importlib-resources 5.4.0
impyla 0.17.0
imutils 0.5.4
incremental 17.5.0
iniconfig 2.0.0
interval 1.0.0
intervalt 0.1.1.dev0
ipykernel 6.5.1
ipython 7.34.0
ipython-genutils 0.2.0
ipywidgets 7.6.5
isort 4.3.21
itchat 1.2.1
itsdangerous 2.0.1
jedi 0.18.1
jieba 0.42.1
Jinja2 3.0.3
joblib 1.1.0
Js2Py 0.71
jsonpath 0.82
jsonschema 4.2.1
jupyter-client 7.1.0
jupyter-core 4.9.1
jupyterlab-pygments 0.1.2
jupyterlab-widgets 1.0.2
keras 2.7.0
Keras-Applications 1.0.8
Keras-Preprocessing 1.1.2
kiwisolver 1.3.2
lazy-object-proxy 1.4.3
libclang 12.0.0
librosa 0.9.1
llvmlite 0.38.1
lml 0.0.2
loguru 0.6.0
lxml 4.3.1
Markdown 3.3.6
MarkupSafe 2.0.1
matplotlib 3.5.0
matplotlib-inline 0.1.3
mccabe 0.6.1
Menu 3.2.2
missingno 0.5.0
mistune 0.8.4
more-itertools 8.13.0
morphology 0.11.12
MouseInfo 0.1.3
moviepy 1.0.3
msoffcrypto-tool 5.1.0
multidict 6.0.2
multiprocess 0.70.12.2
mysql-connector 2.2.9
mysql-connector-python 8.0.29
mysql-connector-python-rf 2.1.3
nbclient 0.5.9
nbconvert 6.3.0
nbformat 5.1.3
nest-asyncio 1.5.1
networkx 2.6.3
nibabel 3.2.2
nipype 0.11.0
nltk 3.7
node 0.9.28
nodeenv 1.6.0
nose 1.3.7
notebook 6.4.6
npm 0.1.1
numba 0.55.2
numpy 1.21.5
oauthlib 3.1.1
odict 1.8.0
olefile 0.47
onnx 1.9.0
opencv-contrib-python 4.5.4.58
opencv-python 4.5.4.58
openpyxl 3.0.9
opt-einsum 3.3.0
optional-django 0.1.0
outcome 1.1.0
packaging 21.3
paddle2onnx 0.8.2
paddlefsl 1.0.0
paddlehub 2.1.1
paddlenlp 2.1.1
paddlepaddle 2.2.0
pandas 1.1.5
pandocfilters 1.5.0
parse 1.19.0
parsel 1.6.0
parso 0.8.2
pathlib 1.0.1
patsy 0.5.2
pdf2image 1.13.1
pdfkit 1.0.0
peewee 3.14.10
pefile 2021.9.3
peppercorn 0.6
pickleshare 0.7.5
Pillow 9.0.1
pip 22.0.4
pipreqs 0.4.11
platformdirs 2.4.0
plotly 5.4.0
plotly-express 0.4.0
pluggy 1.2.0
plumber 1.6
pooch 1.6.0
pptx 0.1.0
pre-commit 2.15.0
premailer 3.10.0
prettytable 2.4.0
proglog 0.1.10
prometheus-client 0.12.0
prompt-toolkit 3.0.22
protobuf 3.19.1
psutil 5.9.1
psycopg2 2.9.3
pure-sasl 0.6.2
pyarrow 8.0.0
pyasn1 0.4.8
pyasn1-modules 0.2.8
PyAutoGUI 0.9.53
pycharts 0.1.5
pychorus 0.1
pycodestyle 2.8.0
pycparser 2.21
pycryptodome 3.11.0
pydeck 0.7.1
pyDeprecate 0.3.1
pydot-ng 2.0.0
pyecharts 0.1.9.4
pyecharts-jupyter-installer 0.0.3
pyee 8.2.2
pyExcelerator 0.6.4.1
PyExecJS 1.5.1
pyflakes 2.4.0
pygame 1.9.4
PyGetWindow 0.0.9
pyglet 1.5.22
Pygments 2.10.0
PyHamcrest 1.9.0
pyinstaller 4.7
pyinstaller-hooks-contrib 2021.3
pyjsparser 2.7.1
pylint 2.5.3
Pympler 1.0.1
PyMsgBox 1.0.9
pymssql 2.2.5
PyMuPDF 1.17.5
PyMySQL 0.9.3
pynput 1.4
pyOpenSSL 21.0.0
pyparsing 3.0.6
pyperclip 1.8.2
pypng 0.0.21
pyppeteer 1.0.2
PyQRCode 1.2.1
PyQt5 5.12
PyQt5_sip 4.19.14
pyqtgraph 0.12.4
pyquery 1.4.3
PyRect 0.1.4
pyrsistent 0.18.0
PyScreeze 0.1.28
PySide2 5.15.2
PySimpleGUI 4.57.0
pytesseract 0.3.8
pytest 7.4.4
python-dateutil 2.8.2
python-docx 0.8.11
python-pptx 0.6.21
pytils 0.3
pytweening 1.0.4
pytz 2018.9
pytz-deprecation-shim 0.1.0.post0
PyWavelets 1.2.0
pywifi 1.1.12
pywin32 306
pywin32-ctypes 0.2.0
pywinpty 1.1.6
pyxnat 1.4
PyYAML 6.0
pyzmq 22.3.0
rarfile 4.0
redis 4.3.3
regex 2022.6.2
relatorio 0.10.0
removebg 0.4
report 0.0.1
request 1.0.117
requests 2.25.1
requests-html 0.10.0
requests-oauthlib 1.3.0
resampy 0.2.2
rich 12.0.1
rsa 4.8
ruamel.yaml 0.17.21
ruamel.yaml.clib 0.2.6
scikit-image 0.19.2
scikit-learn 1.0.2
scipy 1.7.2
seaborn 0.11.2
selenium 2.48.0
semver 2.13.0
Send2Trash 1.8.0
seqeval 1.2.2
setuptools 59.5.0
setuptools-scm 6.3.2
Shapely 1.8.0
shellcheck-py 0.8.0.1
shiboken2 5.15.2
SHop 0.0.2
simplejson 3.17.6
six 1.15.0
smartchart 5.4.8
smartcrop 0.3.3
smartdb 0.5
smmap 5.0.0
sniffio 1.2.0
sortedcontainers 2.4.0
SoundFile 0.10.3.post1
soupsieve 2.3.1
SQLAlchemy 1.4.36
sqlparse 0.2.4
statsmodels 0.13.2
steppy 0.1.16
streamlit 1.9.0
tenacity 8.0.1
tencentcloud-sdk-python 3.0.238
tensorboard 1.15.0
tensorboard-data-server 0.6.1
tensorboard-plugin-wit 1.8.0
tensorflow 1.15.0
tensorflow-estimator 1.15.1
tensorflow-gpu 1.15.0
tensorflow-io-gcs-filesystem 0.22.0
termcolor 1.1.0
terminado 0.12.1
testpath 0.5.0
tf-slim 1.1.0
threadpoolctl 3.0.0
thrift 0.11.0
thrift-sasl 0.4.3
tifffile 2021.11.2
toml 0.10.1
tomli 1.2.2
tools 0.1.9
toolz 0.11.2
torch 1.10.2
torchmetrics 0.7.2
torchvision 0.11.3
tornado 6.1
tqdm 4.62.3
traitlets 5.1.1
traits 6.3.2
treenode 0.1.5
trio 0.19.0
trio-websocket 0.9.2
typed-ast 1.4.3
typing 3.7.4.3
typing_extensions 4.0.0
tzdata 2022.1
tzlocal 4.2
urllib3 1.25.11
utils 1.0.1
validators 0.19.0
vim 0.0.1
virtualenv 20.10.0
visualdl 2.2.2
w3lib 1.22.0
watchdog 2.1.6
wcwidth 0.2.5
web.py 0.40.dev1
webencodings 0.5.1
websockets 10.1
Werkzeug 2.0.2
wheel 0.37.0
widgetsnbextension 3.5.2
win32-setctime 1.1.0
wincertstore 0.2
wordcloud 1.8.1
workbook 1.1
wrapt 1.12.1
wsproto 1.0.0
wxPython 4.0.4
xlrd 1.2.0
XlsxWriter 3.0.2
xlutils 2.0.0
xlwings 0.25.2
xlwt 1.3.0
yagmail 0.14.260
yapf 0.32.0
yarg 0.1.9
yarl 1.7.2
you-get 0.4.1602
zipp 3.6.0
zope.component 5.0.1
zope.deprecation 4.4.0
zope.event 4.5.0
zope.hookable 5.1.0
zope.interface 5.4.0
zope.lifecycleevent 4.3
总结
分享:
负郭幽居一林清,残花寂寂水泠泠。
夜深宴坐无灯火,卷土疏帘月满庭。