Помимо всех (хорошо объясненных) ответов, не было упомянутых ниже, и я часто посещаю этот Q & amp; A.
В двух словах; MySQL думает, что вы хотите сделать математику в своей таблице / столбце и интерпретируете дефисы, такие как «электронная почта», как e
минус mail
.
Отказ от ответственности: Поэтому я думал, что добавлю это как ответ типа «FYI» для тех, кто совершенно не знаком с работой с базами данных, и которые могут не понимать уже описанные технические термины.
Я надеюсь, что через 5 лет это уже не проблема для вас, но я просто должен был сделать то же самое. Это возможно с помощью библиотеки PyCaw .
Простое доказательство концепции на основе примеров PyCaw
from __future__ import print_function
from pycaw.pycaw import AudioUtilities, ISimpleAudioVolume
def main():
sessions = AudioUtilities.GetAllSessions()
for session in sessions:
volume = session._ctl.QueryInterface(ISimpleAudioVolume)
if session.Process and session.Process.name() == "vlc.exe":
print("volume.GetMasterVolume(): %s" % volume.GetMasterVolume())
volume.SetMasterVolume(0.6, None)
if __name__ == "__main__":
main()
Поэтому вместо редактирования моего старого ответа я добавляю новое сообщение, чтобы позволить другим пользователям использовать мой старый код и всех, кто этого не хочет, использовать мой новый код.
def get_master_volume():
proc = subprocess.Popen('/usr/bin/amixer sget Master', shell=True, stdout=subprocess.PIPE)
amixer_stdout = proc.communicate()[0].split('\n')[4]
proc.wait()
find_start = amixer_stdout.find('[') + 1
find_end = amixer_stdout.find('%]', find_start)
return float(amixer_stdout[find_start:find_end])
def set_master_volume(volume):
val = float(int(volume))
proc = subprocess.Popen('/usr/bin/amixer sset Master ' + str(val) + '%', shell=True, stdout=subprocess.PIPE)
proc.wait()
Я разорвал это из здесь и модифицировал его, чтобы использовать только функции.
import time import ctypes # Import the SendInput object SendInput = ctypes.windll.user32.SendInput # C struct redefinitions PUL = ctypes.POINTER(ctypes.c_ulong) class KeyBoardInput(ctypes.Structure): _fields_ = [ ("wVk", ctypes.c_ushort), ("wScan", ctypes.c_ushort), ("dwFlags", ctypes.c_ulong), ("time", ctypes.c_ulong), ("dwExtraInfo", PUL) ] class HardwareInput(ctypes.Structure): _fields_ = [ ("uMsg", ctypes.c_ulong), ("wParamL", ctypes.c_short), ("wParamH", ctypes.c_ushort) ] class MouseInput(ctypes.Structure): _fields_ = [ ("dx", ctypes.c_long), ("dy", ctypes.c_long), ("mouseData", ctypes.c_ulong), ("dwFlags", ctypes.c_ulong), ("time",ctypes.c_ulong), ("dwExtraInfo", PUL) ] class Input_I(ctypes.Union): _fields_ = [ ("ki", KeyBoardInput), ("mi", MouseInput), ("hi", HardwareInput) ] class Input(ctypes.Structure): _fields_ = [ ("type", ctypes.c_ulong), ("ii", Input_I) ] VK_VOLUME_MUTE = 0xAD VK_VOLUME_DOWN = 0xAE VK_VOLUME_UP = 0xAF def key_down(keyCode): extra = ctypes.c_ulong(0) ii_ = Input_I() ii_.ki = KeyBoardInput(keyCode, 0x48, 0, 0, ctypes.pointer(extra)) x = Input( ctypes.c_ulong(1), ii_ ) SendInput(1, ctypes.pointer(x), ctypes.sizeof(x)) def key_up(keyCode): extra = ctypes.c_ulong(0) ii_ = Input_I() ii_.ki = KeyBoardInput(keyCode, 0x48, 0x0002, 0, ctypes.pointer(extra)) x = Input(ctypes.c_ulong(1), ii_) SendInput(1, ctypes.pointer(x), ctypes.sizeof(x)) def key(key_code, length = 0): key_down(key_code) time.sleep(length) key_up(key_code) def volume_up(): key(VK_VOLUME_UP) def volume_down(): key(VK_VOLUME_DOWN) def set_volume(int): for _ in range(0, 50): volume_down() for _ in range(int / 2): volume_up()