为了账号安全,请及时绑定邮箱和手机立即绑定

PYTHON 和批处理脚本:如果存在则运行文件,如果不存在则创建

PYTHON 和批处理脚本:如果存在则运行文件,如果不存在则创建

浮云间 2023-05-23 14:36:50
完全免责声明:我不懂 PYTHON。大家好,我为我的音量键制作了一个 AutoHotKey 脚本。我想创建一个运行 python 文件的批处理文件(因此,如果我更换计算机,我可以轻松创建此脚本),它将执行以下操作检查D盘是否存在volume_keys.ahk如果存在,运行它;如果它不存在,则创建一个名为 volume_keys.ahk 的文件并将我的脚本添加到其中。我的脚本是:^!NumpadMult::Send  {Volume_Mute}^!NumpadAdd::Send   {Volume_Up}^!NumpadSub::Send   {Volume_Down} 我知道如何编写 .bat 文件,只需要 python 观点的帮助,但我请求社区检查它:@ECHO OFFECHO This script will run an AHK Script. If you want to stop this process from happening, then cross this window off.If you want to continye:pausecd d:D:\run_volume_keys_ahk_script.py我真的很感谢大家的任何帮助。
查看完整描述

2 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

您可以os为此使用图书馆。这是 python 程序的样子。


import os


if os.path.isfile('D:\\volume_keys.ahk'): # check if it exists

    os.system('D:\\volume_keys.ahk') # execute it

else:

    with open('D:\\volume_keys.ahk', 'w') as f: # open it in w (write) mode

        f.write('^!NumpadMult::Send  {Volume_Mute} \

^!NumpadAdd::Send   {Volume_Up} \

^!NumpadSub::Send   {Volume_Down}') # Write to file

    os.system('D:\\volume_keys.ahk') # execute


查看完整回答
反对 回复 2023-05-23
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

要激活 ahk 脚本,您可能需要使用我从此处subprocess获取示例的模块

import subprocess
subprocess.call(["path/to/ahk.exe", "script.ahk"])

请注意,您必须先在计算机上找到 ahk 可执行文件,然后才能使用该脚本,也许您也想自动检查它。

您可以在一个字符串中设置要检查脚本的路径,然后将脚本的文件名作为字符串添加到列表中。您可以使用listdir()fromos模块查看给定路径中的任何文件和目录,然后遍历您的脚本名称并检查它是否存在于该文件列表中。如果是,请运行它。

在这个例子中,我将你的脚本复制粘贴到一个字符串中作为字典中键“scriptname”的值,这样 python 就可以实际创建脚本文件。不过,这并不是一个很好的方法,您可能希望在 python 脚本旁边的目录中准备脚本并从那里复制它们。

from os import listdir

from os.path import isfile, join


CHECK_PATH = "D:"

AHK_EXECUTABLE_PATH = "path/to/ahk.exe"

SCRIPTS_TO_CHECK = {'script1.ahk':"""^!NumpadMult::Send  {Volume_Mute}

^!NumpadAdd::Send   {Volume_Up}

^!NumpadSub::Send   {Volume_Down} """, 'script2.ahk':" some other script here"}


files_to_check = set(listdir(CHECK_PATH)) # using a set for fast lookup later


for scriptname, script in SCRIPTS_TO_CHECK.items():

    if not scriptname in files_to_check:

        print(f"script {scriptname} not found, creating it.")

        with open(scriptname, 'w') as file:

            file.write(script)

    # else

    subprocess.call(AHK_EXECUTABLE_PATH, scriptname)


查看完整回答
反对 回复 2023-05-23
  • 2 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信