Python相关知识
pyenv-win 命令列表 安装命令
pyenv install <version>:安装指定版本的Python。pyenv uninstall <version>:卸载指定版本的Python。pyenv rehash:重新生成shims和重新加载环境变量。版本管理命令
pyenv versions:列出所有已安装的Python版本。pyenv version:显示当前激活的Python版本。pyenv global <version>:设置全局Python版本。pyenv local <version>:在当前目录设置局部Python版本。pyenv shell <version>:在当前shell中设置Python版本。pyenv which <command>:显示指定命令所对应的Python解释器路径。其他命令
pyenv exec <command>:在特定版本的Python环境中执行命令。pyenv virtualenv <version> <name>:创建一个新的虚拟环境。pyenv activate <name>:激活指定名称的虚拟环境。pyenv deactivate:停用当前虚拟环境。注意事项
在使用pyenv之前,请确保已经正确安装并配置好了Python环境。使用虚拟环境可以帮助您在不同项目之间隔离Python依赖。使用pyenv global、pyenv local和pyenv shell可以轻松管理不同版本的Python。[System.Environment]::SetEnvironmentVariable('PYENV',"C:\sw" + "\.pyenv\pyenv-win\","User")[System.Environment]::SetEnvironmentVariable('PYENV_ROOT',"C:\sw" + "\.pyenv\pyenv-win\","User")[System.Environment]::SetEnvironmentVariable('PYENV_HOME',"C:\sw" + "\.pyenv\pyenv-win\","User")[System.Environment]::SetEnvironmentVariable('path', "C:\sw" + "\.pyenv\pyenv-win\bin;" + "C:\sw" + "\.pyenv\pyenv-win\shims;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUserUnblock-File (Join-Path $env:PYENV 'bin/pyenv.ps1')pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simplepoetry source add tsinghua https://pypi.tuna.tsinghua.edu.cn/simpleyadm工具了解一下,并且使用上。Python 常用脚本
CH341A 模块
FTDI 模块
import ft4222import ft4222.I2CMaster# 需要在命令行使用以下命令,安装库# pip install ft4222# list devicesnbDev = ft4222.createDeviceInfoList()for i in range(nbDev): print(ft4222.getDeviceInfoDetail(i, False))python venv
这是 Python 自带的包管理器,下面介绍常用命令。
# 创建环境python -m venv /path/to/your/venv# 激活环境 Windows/path/to/your/venv/Scripts/activate# 激活环境 Linuxsource /path/to/your/venv/bin/activate# 退出环境deactivatepip set
# 导出包pip freeze > requirements.txt# 导入包pip install -r requirements.txt# pip 安装到指定路径pip install package_name -t /path/to/your/directorypip package list
pip install vcdvcdpip install python-lsp-server文档
LearnPython
模块
安装
pip install pyelftools PySimpleGUI lxml numpy chardet scipy matplotlibpip install pyvisa pandas shutilpip install shutil openpyxl说明
# 用来暂停os.system("pause")打包应用
# -F 表示 打包为单个文件# -w 表示为没有控制台# -i .\favicon.ico 添加应用图标pyinstaller.exe -F -w -i .\favicon.ico .\test.pywav 250
import wave import math import array
音频参数
sample_rate = 44100 # 采样频率 duration = 60*10 # 音频时长(秒)
创建一个新的 WAV 文件
output_file = wave.open(‘output.wav’, ‘w’) output_file.setnchannels(1) # 单声道 output_file.setsampwidth(2) # 2 字节,16 位 output_file.setframerate(sample_rate)
生成 250Hz 的音频数据
samples = array.array(‘h’, [0] _ (sample_rate _ duration)) amplitude = 2 ** 15 - 1 # 振幅
for i in range(len(samples)): t = float(i) / sample*rate # 当前时间(秒) samples[i] = int(amplitude * math.sin(2 _ math.pi _ 250 _ t))
将音频数据写入 WAV 文件
output_file.writeframes(samples)
关闭 WAV 文件
output_file.close()
import numpy as np from scipy.io import wavfile import wave
def generatesine_wave(freq, duration, filename): # 采样率 sample_rate = 44100 # 生成时间轴 t = np.linspace(0, duration, int(duration * samplerate), endpoint=False) # 生成正弦波信号 wave_data = np.sin(2 * np.pi _ freq _ t) # 将信号归一化到 16 位范围内 wave_data_normalized = (wave_data * 32767).astype(np.int16)
# 创建并保存wav文件with wave.open(filename, 'wb') as wav_file: wav_file.setnchannels(1) # 设置为单声道 wav_file.setsampwidth(2) # 设置采样大小为2字节(16位) wav_file.setframerate(sample_rate) # 设置采样率 wav_file.writeframes(wave_data_normalized.tobytes())示例:生成 1000Hz 频率,持续 2 秒的正弦波 wav 文件
generate_sine_wave(1000, 2, “sine_wave.wav”)
Excel
import as xl workbook = xl.load_workbook(filename=“D:\Documents\aa.xlsx”) workbook.sheetnames
pip
方法一: 打开网址,https://pypi.org/project/pip/#files
然后下载源码,解压,打开命令行,输入命令python setup.py install
输入pip --version,查看是否安装成功
方法二: 打开终端,执行py get-pip.py
安装模块: pip install module-name 例如: pip install pyelftools
- juypter
- pillow
- requests
- pyinstaller
# 参数解释: F只产生一个exe,w是不使用控制台,i是图标pyinstaller -i xxx.icon -Fw demo.pyFAQ
Q: 指定版本运行脚本?
A: py -3.7 a.py
#import PySimpleGUI as sglayout = [[sg.Text('Your typed chars appear here:'), sg.Text(size=(15,1), key='-OUTPUT-')], [sg.Input(key='-IN-')], [sg.Button('Show'), sg.Button('Exit')]]
window = sg.Window('Test', layout)
while True: # Event Loop event, values = window.read() print(event, values) if event in (None, 'Exit'): break if event == 'Show': # Update the "output" text element to be the value of "input" element window['-OUTPUT-'].update(values['-IN-'])
window.close()#import osimport re
def batch_rename_files(directory, regex_pattern, new_text): for filename in os.listdir(directory): if re.match(regex_pattern, filename): new_filename = re.sub(regex_pattern, new_text, filename) os.rename(os.path.join(directory, filename), os.path.join(directory, new_filename))
# 指定目录和正则表达式directory = "D:/aaaa"regex_pattern = r'FPGA_240109b(.*)'new_text = r'FPGA_240109(-3_6)\1' #\1指保留其他部分不变
# 执行批量重命名batch_rename_files(directory, regex_pattern, new_text)
# 生成指定的binimport osimport binasciiimport random
file_path = 'example.bin'# file_size = 0x3150file_size = 1024*8
with open(file_path, 'wb') as f: remaining_bytes = file_size buffer_size = 1024 # 每次写入的字节数 while remaining_bytes > 0: buffer = bytearray(random.getrandbits(8) for _ in range(min(buffer_size, remaining_bytes))) f.write(buffer) remaining_bytes -= buffer_size
# 音量import PyAutoGUIimport time
while 1: pyautogui.press('volumeup') #调大音量 time.sleep(5) pyautogui.press('volumedown') #调小音量 time.sleep(5)#pyautogui.press('volumemute') #静音
# 图形化import PySimpleGUI as sg# sg.popup('demo ok')# sg.popup_ok_cancel('PopupOKCancel')# sg.popup_error('PopupError') # Shows red error button# sg.popup_timed('PopupTimed') # Automatically closes# 例子:text = sg.popup_get_file('Please enter a file name')
import PySimpleGUI as sgimport jsonsg.set_options(font=('Arial Bold', 16))layout = [ [sg.Text('Settings', justification='left')], [sg.Text('User name', size=(10, 1), expand_x=True), sg.Input(key='-USER-')], [sg.Text('email ID', size=(10, 1), expand_x=True), sg.Input(key='-ID-')], [sg.Text('Role', size=(10, 1), expand_x=True), sg.Input(key='-ROLE-')], [sg.Button("LOAD"), sg.Button('SAVE'), sg.Button('Exit')]]window = sg.Window('User Settings Demo', layout, size=(715, 200))# Event Loopwhile True: event, values = window.read() if event in (sg.WIN_CLOSED, 'Exit'): break if event == 'LOAD': f = open("settings.txt", 'r') settings = json.load(f) window['-USER-'].update(value=settings['-USER-']) window['-ID-'].update(value=settings['-ID-']) window['-ROLE-'].update(value=settings['-ROLE-']) if event == 'SAVE': settings = {'-USER-': values['-USER-'], '-ID-': values['-ID-'], '-ROLE-': values['-ROLE-']} f = open("settings.txt", 'w') json.dump(settings, f) f.close()window.close()
import matplotlib.pyplot as pltimport numpy as npfrom matplotlib.backends.backend_tkagg import FigureCanvasTkAggimport PySimpleGUI as sgimport matplotlibmatplotlib.use('TkAgg')fig = matplotlib.figure.Figure(figsize=(5, 4), dpi=100)t = np.arange(0, 3, .01)fig.add_subplot(111).plot(t, 2 * np.sin(2 * np.pi * t))def draw_figure(canvas, figure): tkcanvas = FigureCanvasTkAgg(figure, canvas) tkcanvas.draw() tkcanvas.get_tk_widget().pack(side='top', fill='both', expand=1) return tkcanvaslayout = [[sg.Text('Plot test')], [sg.Canvas(key='-CANVAS-')], [sg.Button('Ok')]]window = sg.Window('Matplotlib In PySimpleGUI', layout, size=(715, 500), finalize=True, element_justification='center', font='Helvetica 18')
# add the plot to the windowtkcanvas = draw_figure(window['-CANVAS-'].TKCanvas, fig)event, values = window.read()window.close()
import PySimpleGUI as psgpsg.set_options(font=('Arial Bold', 16))layout = [ [psg.Text('Enter a num: '), psg.Input(key='-FIRST-')], [psg.Text('Enter a num: '), psg.Input(key='-SECOND-')], [psg.Text('Result : '), psg.Text(key='-OUT-')], [psg.Button("Add"), psg.Button("Sub"), psg.Exit()],]window = psg.Window('Calculato1r', layout, size=(715, 180))while True: event, values = window.read() print(event, values) if event == "Add": result = int(values['-FIRST-']) + int(values['-SECOND-']) if event == "Sub": result = int(values['-FIRST-']) - int(values['-SECOND-']) window['-OUT-'].update(result) if event == psg.WIN_CLOSED or event == 'Exit': breakwindow.close()
import PySimpleGUI as sg
# 定义布局layout = [[sg.Text('Hello PySimpleGUI!')], [sg.Button('OK')], [sg.Button('continue')]]
# 创建窗口window = sg.Window('aa', layout,icon = 'edit_icon.ico')
# 事件循环while True: event, values = window.read()
if event == sg.WINDOW_CLOSED or event == 'OK': break elif event == 'continue': sg.popup("aaaaaaaaaaaaaa")
# 关闭窗口window.close()
import PySimpleGUI as sgimport os
def main(): # 定义历史记录文件路径 history_file = 'history.txt'
# 创建布局 layout = [ [sg.Text('File 1:'), sg.InputText(key='file1'), sg.FileBrowse(initial_folder=get_last_path(history_file, 0))], [sg.Text('File 2:'), sg.InputText(key='file2'), sg.FileBrowse(initial_folder=get_last_path(history_file, 1))], [sg.Text('File 3:'), sg.InputText(key='file3'), sg.FileBrowse(initial_folder=get_last_path(history_file, 2))], [sg.Text('File 4:'), sg.InputText(key='file4'), sg.FileBrowse(initial_folder=get_last_path(history_file, 3))], [sg.Button('OK')], ]
# 创建窗口 window = sg.Window('File Selector', layout)
while True: event, values = window.read()
if event == sg.WINDOW_CLOSED: break
if event == 'OK': # 保存历史记录 save_history(history_file, values['file1'], values['file2'], values['file3'], values['file4'])
# 弹出消息框 sg.popup('Hello World!') break
window.close()
def get_last_path(history_file, index): # 从历史记录文件中获取上次保存的路径 if os.path.exists(history_file): with open(history_file, 'r') as file: history = file.readlines() if len(history) > index: return history[index].strip() return ''
def save_history(history_file, *paths): # 将当前选择的路径保存到历史记录文件中 with open(history_file, 'w') as file: for path in paths: file.write(f'{path}\n')
if __name__ == '__main__': main()
import PySimpleGUI as sg
sg.theme('Default1') # 设置当前主题# 界面布局,将会按照列表顺序从上往下依次排列,二级列表中,从左往右依此排列layout = [ [sg.Text('Some text on Row 1')], [sg.Text('Enter something on Row 2'), sg.InputText()], [sg.Button('Ok'), sg.Button('Cancel')] ]
# 创造窗口window = sg.Window('Window Title', layout)# 事件循环并获取输入值while True: event, values = window.read() if event in (None, 'Cancel'): # 如果用户关闭窗口或点击`Cancel` break print('You entered ', values[0])
window.close()
import PySimpleGUI as sg
layout = [[sg.Text('My one-shot window.')], [sg.InputText()], [sg.Submit(), sg.Cancel()]]
window = sg.Window('Window Title', layout)
event, values = window.read()
window.close()text_input = values[0]sg.popup('You entered', text_input) # 弹出窗口
import PySimpleGUI as sglayout = [[sg.Text('Your typed chars appear here:'), sg.Text(size=(15,1), key='-OUTPUT-')], [sg.Input(key='-IN-')], [sg.Button('Show'), sg.Button('Exit')]]
window = sg.Window('Pattern 2B', layout)
while True: # Event Loop event, values = window.read() print(event, values) if event in (None, 'Exit'): break if event == 'Show': # Update the "output" text element to be the value of "input" element window['-OUTPUT-'].update(values['-IN-'])
window.close()
import PySimpleGUI as sg
layout = [[sg.Text('A custom progress meter')], [sg.ProgressBar(1000, orientation='h', size=(20, 20), key='progressbar')], [sg.Cancel()]]
window = sg.Window('Custom Progress Meter', layout)progress_bar = window['progressbar']# loop that would normally do something usefulfor i in range(1000): # check to see if the cancel button was clicked and exit loop if clicked event, values = window.read(timeout=10) if event == 'Cancel' or event is None: break # update bar with loop value +1 so that bar eventually reaches the maximum progress_bar.UpdateBar(i + 1)# done with loop... need to destroy the window as it's still openwindow.close()
import PySimpleGUI as sgsg.theme('Default1')text = sg.popup_get_file('Please enter a file name',no_window=False)print(text)
import PySimpleGUI as sgtheme_name_list = sg.theme_list()sg.theme_previewer()sg.theme('Default1')layout = [[sg.Text('Theme Browser')], [sg.Text('Click a Theme color to see demo window')], [sg.Listbox(values=sg.theme_list(), size=(20, 12), key='-LIST-', enable_events=True)], [sg.Button('Exit')]]window = sg.Window('Theme Browser', layout)
while True: # Event Loop event, values = window.read() if event in (None, 'Exit'): break sg.theme(values['-LIST-'][0]) sg.popup_get_text('This is {}'.format(values['-LIST-'][0]))
window.close()
import PySimpleGUI as psgtext = psg.popup_get_text('Enter your name', title="Textbox")print ("You entered: ", text)file=psg.popup_get_file('Select a file', title="File selector")print ("File selected", file)folder=psg.popup_get_folder('Get folder', title="Folder selector")print ("Folder selected",folder)ch = psg.popup_yes_no("Do you want to Continue?", title="YesNo")print ("You clicked", ch)ch = psg.popup_ok_cancel("Press Ok to proceed", "Press cancel to stop", title="OkCancel")if ch=="OK": print ("You pressed OK")if ch=="Cancel": print ("You pressed Cancel")psg.popup_no_buttons('You pressed', ch, non_blocking=True)psg.popup_auto_close('This window will Autoclose')
import PySimpleGUI as psglayout = [ [psg.Text('Name '), psg.Input()], [psg.Text('Address '), psg.Input()], [psg.Text('Email ID '), psg.Input()], [psg.OK(), psg.Exit()]]window = psg.Window('Form', layout)while True: event, values = window.read() if event == psg.WIN_CLOSED or event == 'Exit': break print (event, values)window.close()
import PySimpleGUI as psgpsg.set_options(font=('Arial Bold', 16))layout = [ [psg.Text('Name ', size=(15, 1)), psg.Input(key='-NM-', expand_x=True)], [psg.Text('Address ', size=(15, 1)), psg.Input(key='-AD-', expand_x=True)], [psg.Text('Email ID ', size=(15, 1)), psg.Input(key='-ID-', expand_x=True)], [psg.Text('You Entered '), psg.Text(key='-OUT-')], [psg.OK(), psg.Exit()],]window = psg.Window('Form', layout, size=(715, 200))while True: event, values = window.read() print(event, values) out = values['-NM-'] + ' ' + values['-AD-'] + ' ' + values['-ID-'] window['-OUT-'].update(out) if event == psg.WIN_CLOSED or event == 'Exit': breakwindow.close()FTDI module
import ft4222import ft4222.I2CMaster
# 需要在命令行使用以下命令,安装库# pip install ft4222
# list devicesnbDev = ft4222.createDeviceInfoList()for i in range(nbDev): print(ft4222.getDeviceInfoDetail(i, False))生成音频
# wav 250import waveimport mathimport array
# 音频参数sample_rate = 44100 # 采样频率duration = 60*1 # 音频时长(秒)
# 创建一个新的WAV文件output_file = wave.open('output.wav', 'w')output_file.setnchannels(1) # 单声道output_file.setsampwidth(2) # 2字节,16位output_file.setframerate(sample_rate)
# 生成250Hz的音频数据samples = array.array('h', [0] * (sample_rate * duration))amplitude = 2 ** 15 - 1 # 振幅
for i in range(len(samples)): t = float(i) / sample_rate # 当前时间(秒) samples[i] = int(amplitude * math.sin(2 * math.pi * 250 * t))
# 将音频数据写入WAV文件output_file.writeframes(samples)
# 关闭WAV文件output_file.close()打包的时候使用:
pyinstaller --icon=edit_icon.ico --noconsole --onefile demo.pypyenv
pyenv versionpyenv installpyenv globalpyenv versions# 切换分支pyenv global 3.7.0Python 学习笔记基础篇
LearnPython
模块
安装
pip install pyelftools PySimpleGUI lxml numpy chardet scipy matplotlibpip install pyvisa pandas shutilpip install shutil openpyxl说明
# 用来暂停os.system("pause")打包应用
# -F 表示 打包为单个文件# -w 表示为没有控制台# -i .\favicon.ico 添加应用图标pyinstaller.exe -F -w -i .\favicon.ico .\test.pypython venv
这是 Python 自带的包管理器,下面介绍常用命令。
# 创建环境python -m venv /path/to/your/venv# 激活环境 Windows/path/to/your/venv/Scripts/activate# 激活环境 Linuxsource /path/to/your/venv/bin/activate# 退出环境deactivatepip set
# 导出包pip freeze > requirements.txt# 导入包pip install -r requirements.txt# pip 安装到指定路径pip install package_name -t /path/to/your/directorypip package list
pip install vcdvcdpip install python-lsp-serverpip
方法一: 打开网址,https://pypi.org/project/pip/#files
然后下载源码,解压,打开命令行,输入命令python setup.py install
输入pip --version,查看是否安装成功
方法二: 打开终端,执行py get-pip.py
安装模块: pip install module-name 例如: pip install pyelftools
- juypter
- pillow
- requests
- pyinstaller
# 参数解释: F只产生一个exe,w是不使用控制台,i是图标pyinstaller -i xxx.icon -Fw demo.pyFAQ
Q: 指定版本运行脚本?
A: py -3.7 a.py
打包
打包的时候使用:
pyinstaller --icon=edit_icon.ico --noconsole --onefile demo.py图形化
pysimplegui 5.0 版本开始收费,所以只能安装 5.0 之前的版本.
pip uninstall PySimpleGUIpip install PySimpleGUI==4.70.1支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!