Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Windows 10中的任务计划程序上计划.py文件_Python - Fatal编程技术网

Python 在Windows 10中的任务计划程序上计划.py文件

Python 在Windows 10中的任务计划程序上计划.py文件,python,Python,我已尝试将.py文件转换为.exe文件。不幸的是,.exe文件出现了问题;我相信这是因为我的代码相当复杂。 因此,我试图用任务调度器直接调度我的.py文件,但每次我这样做,然后运行它以查看是否有效,就会弹出一个窗口,询问我想如何打开该程序?-- 你们中有人知道如何使用任务调度器成功地调度.py文件吗?请帮忙,谢谢 视窗10 Python3.5.2创建exe应该是最好的方法。但是,如果要使用任务计划程序运行它,可以通过以下方式执行: 启动窗口的任务计划程序 查找操作窗格(右侧),其中包含创建基本任

我已尝试将.py文件转换为.exe文件。不幸的是,.exe文件出现了问题;我相信这是因为我的代码相当复杂。 因此,我试图用任务调度器直接调度我的.py文件,但每次我这样做,然后运行它以查看是否有效,就会弹出一个窗口,询问我想如何打开该程序?--

你们中有人知道如何使用任务调度器成功地调度.py文件吗?请帮忙,谢谢

视窗10
Python3.5.2创建exe应该是最好的方法。但是,如果要使用任务计划程序运行它,可以通过以下方式执行:

  • 启动窗口的任务计划程序
  • 查找操作窗格(右侧),其中包含创建基本任务操作。点击它
  • 这将打开一个向导,您将在其中定义任务的名称、触发器(运行时)和操作(要运行的程序)。 Action选项卡用于指定要运行的Python脚本的名称以及脚本的任何参数
  • 为了确保无论调度任务使用的登录帐户如何,Python脚本都将运行,并避免混淆混合环境(64位或32位)中使用的Python版本,建议使用Python文件名作为可执行文件的参数来运行Python可执行文件

    假设要运行的脚本是E:\My script.py。不要直接运行脚本,而是指示任务计划程序以脚本作为参数运行python.exe。例如:

    C:\Python27\ArcGIS10.2\python.exe“E:\My script.py”

    python.exe的位置取决于您的安装。如果你不知道它在哪里,你可以找到它的位置;将以下代码复制并粘贴到新的Python脚本中,然后执行该脚本。该脚本将打印python.exe的位置以及有关python环境的其他信息

    import sys
    import platform
    import imp
    
    print("Python EXE     : " + sys.executable)
    print("Architecture   : " + platform.architecture()[0])
    print("Path to arcpy  : " + imp.find_module("arcpy")[1])
    
    raw_input("\n\nPress ENTER to quit")
    
    确定python.exe的位置后,将在任务计划程序的“操作”面板中输入以下内容:


    如果脚本中有其他参数,请在脚本路径后提供这些参数。希望这有帮助。

    您执行的脚本将是python目录中的exe ex)C:\Python27\python.exe

    “参数”是指向脚本的路径 ex)C:\Path\To\Script.py


    因此,请这样想:从技术上讲,您并不是在按计划任务执行脚本。您正在为计算机执行根python exe,脚本作为参数提供

    您应该在
    操作
    选项卡中设置:

    • 在程序中,python.exe的路径:例如
      “C:\Users\Me\AppData\Local\programs\python\Python36\python.exe”
    • 在参数中,文件的完整路径,包括扩展名:例如
      “C:\Users\Me\Desktop\mypythonsrcipt.py”
    • 对于起始位置:留空
    如果这不起作用,请尝试:

    • 在程序中,python.exe的路径:例如
      “C:\Users\Me\AppData\Local\programs\python\Python36\python.exe”
    • 在参数中,您的文件名的扩展名为:例如
      “mypythonsrcipt.py”
    • 在“开始于”中,脚本的文件夹:例如
      “C:\Users\Me\Desktop\”
    此外,每次我修改任务时,
    General
    选项卡中的用户帐户都会切换到中等强制级别。因此,我必须重新打开TAK并将用户帐户设置回我的用户名:(参见此)


    如果仍然无法运行脚本,请进入事件日志、
    应用程序和服务日志/Microsoft/Windows/TaskScheduler/Operational
    (右键单击以启用该脚本)并查找错误

    这件事差点让我掉头发。我总是得到0x1作为执行上述操作的结果。一位经验丰富的Windows管理员告诉我:

    创建批处理文件:

    SET logfile="C:\Reports\batch.log"
    @echo off
    @echo Starting Script at %date% %time% >> %logfile%
    "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\python.exe" "C:\Users\sys_www\source\repos\hardware\ReportAssembler.py"
    @echo finished at %date% %time% >> %logfile%
    
    call C:\ProgramData\Anaconda3\condabin\conda.bat activate myenv
    
    然后在任务配置的操作部分提供批处理文件。还有一件事需要注意,在python程序运行时编写的所有文件实际上都可以被执行脚本的用户访问

    我尝试将脚本用作参数,并在program/script中使用python exe。首先出现错误“Windows计划任务未运行”。
    然后在进行了一些配置之后,我得到了错误0x1,这完全没有告诉我任何信息。

    这对我有效,您可以尝试使用操作窗格:

    请注意,py文件的路径在双引号中,添加参数:$(Arg0)

    选中常规页签中的“以最高权限运行”,最好在设置页签的下拉菜单中选择“并行运行新实例”


    毕竟,您可以在“触发器”选项卡中设置任务计划以检查更改的效果(请记住在“常规”选项卡中选择“无论用户是否登录都运行”)

    由于某些原因,windows任务计划程序在导入模块语句时失败的环境中启动python.exe。我必须使用CMD.exe来解决问题,并传递命令以在给定文件夹中运行python脚本

    使用程序

    CMD
    
    然后单击“选项”选项卡:

    /c python main.py
    
    并在“起始位置”选项卡中填写源位置:


    不知道是什么原因。前面描述的解决方案都不适合我。

    这绝对适合我。我使用的是Windows10专业版,我花了将近6个月的时间才得到这个解决方案。多亏了上面的建议

    我采纳了这个建议,它马上就成功了。我所做的只是指示调度器以我的脚本作为参数运行python.exe,正如下面这个家伙所解释的那样

    这就是我假设要运行的脚本是E:\My script.py。不要直接运行脚本,而是指示任务调度器将脚本作为argu运行python.exe
    call C:\ProgramData\Anaconda3\condabin\conda.bat activate myenv
    
    conda init cmd.exe
    
    schtasks /create /SC ONCE /TN <taskname> /TR C:\full\pathto\scheduledtask.bat /ST <hh:mm>