Сохранение списка установленных модулей в файл
pip freeze > requirements.txt
Установка пакетов по списку из файла
pip install -r requirements.txt
Сохранение списка установленных модулей в файл
pip freeze > requirements.txt
Установка пакетов по списку из файла
pip install -r requirements.txt
>>> from subprocess import check_output
>>> out = check_output(["ping", "-c3", "8.8.8.8"])
>>> out
b'PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.\n64 bytes from 8.8.8.8: icmp_seq=1 ttl=108 time=152 ms\n64 bytes from 8.8.8.8: icmp_seq=2 ttl=108 time=151 ms\n64 bytes from 8.8.8.8: icmp_seq=3 ttl=108 time=46.9 ms\n\n--- 8.8.8.8 ping statistics ---\n3 packets transmitted, 3 received, 0% packet loss, time 2004ms\nrtt min/avg/max/mdev = 46.872/116.565/152.004/49.283 ms\n'
>>>
Способ работает только если вызванная программа завершилась без ошибок. Если хотим предусмотреть ошибки:
import subprocess as sp
# ok
pipe = sp.Popen( 'ls /bin', shell=True, stdout=sp.PIPE, stderr=sp.PIPE )
res = pipe.communicate()
print("retcode =", pipe.returncode)
print("res =", res)
print("stderr =", res[1])
for line in res[0].decode(encoding='utf-8').split('\n'):
print(line)
# with error
pipe = sp.Popen( 'ls /bing', shell=True, stdout=sp.PIPE, stderr=sp.PIPE )
res = pipe.communicate()
print("retcode =", pipe.returncode)
print("res =", res)
print("stderr =", res[1])
proc = subprocess.Popen(["notepad.exe",],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
try:
outs, errs = proc.communicate(timeout=15)
except TimeoutExpired:
proc.kill()
outs, errs = proc.communicate()
https://pypi.org/project/paramiko/
import paramiko
host = '192.168.0.8'
user = 'login'
secret = 'password'
port = 22
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=host, username=user, password=secret, port=port)
stdin, stdout, stderr = client.exec_command('ls -l')
data = stdout.read() + stderr.read()
client.close()
host = "example.com"
port = 22
transport = paramiko.Transport((host, port))
transport.connect(username='login', password='password')
sftp = paramiko.SFTPClient.from_transport(transport)
remotepath = '/path/to/remote/file.py'
localpath = '/path/to/local/file.py'
sftp.get(remotepath, localpath)
sftp.put(localpath, remotepath)
sftp.close()
transport.close()
Подробности со всеми параметрами подключения, использованием ключей и т.п. в help(connect)
import os
print os.getcwd()
...
os.chdir(r"C:\Users\...\test")
...
import numpy as np
import pandas as pd
# Создание 2-мерного массива numpy
>>> data = np.array([[5.8, 2.8], [6.0, 2.2]])
>>> print(data)
>>> data
array([[5.8, 2.8],
[6. , 2.2]])
# Создание pandas dataframe из массива numpy
>>> dataset = pd.DataFrame({'Column1': data[:, 0], 'Column2': data[:, 1]})
>>> print(dataset)
Column1 Column2
0 5.8 2.8
1 6.0 2.2
def log_debug_decorator(func):
def wrapper(*args, **kwargs):
logger.log_debug("%s started" % func.__name__)
out = func(*args, **kwargs)
logger.log_debug("%s finished" % func.__name__)
return out
return wrapper
@log_debug_decorator
def empty_function():
"""!@brief ничего не делать
Заглушка для новых элементов управления
"""
import time
time.sleep(3) # Сон в 3 секунды
os.startfile(r'test.png')
https://pypi.org/project/dearpygui/
https://hoffstadt.github.io/DearPyGui/api_dearpygui.html#dearpygui.dearpygui.draw_line
https://habr.com/ru/company/skillfactory/blog/576912/ Быстрый, мощный интерфейс на Python
https://github.com/hoffstadt/DearPyGui/wiki/Logging
https://dearpygui.readthedocs.io/en/stable_08/api-reference/item-creation-runtime.html — документация для 0.8
Уже вышла версия 1.0
В версии 0.8…. работало так:
# 0.8
import dearpygui.dearpygui as dpg
from dearpygui.demo import show_demo
show_demo()
dpg.start_dearpygui()
В версии 1.3.1 код выше вылетает с ошибкой сегментации (Ubuntu LTS). Демка вернулась к жизни в 1.3.1 в следующем виде:
# 1.3.1
import dearpygui.dearpygui as dpg
from dearpygui.demo import show_demo
dpg.create_context()
dpg.create_viewport()
dpg.setup_dearpygui()
show_demo()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()
import dearpygui.dearpygui as dpg
def show_info(title, message, selection_callback):
# guarantee these commands happen in the same frame
with dpg.mutex():
viewport_width = dpg.get_viewport_client_width()
viewport_height = dpg.get_viewport_client_height()
with dpg.window(label=title, modal=True, no_close=True) as modal_id:
dpg.add_text(message)
dpg.add_button(label="Ok", width=75, user_data=(modal_id, True), callback=selection_callback)
dpg.add_same_line()
dpg.add_button(label="Cancel", width=75, user_data=(modal_id, False), callback=selection_callback)
# guarantee these commands happen in another frame
dpg.split_frame()
width = dpg.get_item_width(modal_id)
height = dpg.get_item_height(modal_id)
dpg.set_item_pos(modal_id, [viewport_width // 2 - width // 2, viewport_height // 2 - height // 2])
def on_selection(sender, unused, user_data):
if user_data[1]:
print("User selected 'Ok'")
else:
print("User selected 'Cancel'")
# delete window
dpg.delete_item(user_data[0])
dpg.create_context()
dpg.create_viewport()
dpg.setup_dearpygui()
dpg.show_viewport()
with dpg.window(label="Example"):
dpg.add_button(label="Open Messagebox", callback=lambda:show_info("Message Box", "Do you wish to proceed?", on_selection))
dpg.start_dearpygui()
dpg.add_button(label="Apply 4", callback=lambda a, b, c: print("a: %s, b: %s, c: %s" % (a, b, c)), user_data="Some More Data")
dpg.set_global_font_scale(1.0)
with dpg.font_registry():
#
# dpg.add_font(
#
# )
with dpg.font(r"c:\windows\fonts\cour.ttf",
40,
default_font=True
):
#dpg.add_font_range_hint(dpg.mvFontRangeHint_Default)
dpg.add_font_range_hint(dpg.mvFontRangeHint_Cyrillic)
with dpg.window(
label="My label",
pos=(620, 20),
width=560,
height=760,
id="window_test"
) as pipeline_window:
dpg.add_button(
label="My Button",
callback=my_callback
)
dpg.setup_viewport()
dpg.set_viewport_title('qwe')
dpg.set_viewport_width(800)
dpg.set_viewport_height(800)
dpg.set_viewport_resizable(False)
dpg.set_viewport_clear_color([204, 204, 204])
dpg.start_dearpygui()
Ссылка на исходник самой демки со всеми примерами: https://github.com/hoffstadt/DearPyGui/blob/master/DearPyGui/dearpygui/demo.py
import datetime
TIME_START = datetime.datetime.now()
...
plt_target_dir += TIME_START.strftime(
"%Y.%m.%d_%H.%M"
)