尝试在python中使用简单计时器关闭windows

尝试在python中使用简单计时器关闭windows,windows,python-3.x,shutdown,Windows,Python 3.x,Shutdown,试图用python制作一个简单的计时器来关闭windows(只是为了好玩),但我遇到了一个小问题,找不到答案,脚本只是问用户是否想用几分钟或几秒钟来关闭,使用if,使用秒的部分工作正常,问题是几分钟,脚本得到的时间以分钟为单位,并转换为秒,然后运行:subprocess.call([“shutdown”“-s”“,“-t”,ntime]) 但它不起作用,如果我双击file.py并尝试此部分,脚本就会关闭,但如果在空闲状态下执行,我会收到以下错误: Traceback (most recent c

试图用python制作一个简单的计时器来关闭windows(只是为了好玩),但我遇到了一个小问题,找不到答案,脚本只是问用户是否想用几分钟或几秒钟来关闭,使用if,使用秒的部分工作正常,问题是几分钟,脚本得到的时间以分钟为单位,并转换为秒,然后运行:subprocess.call([“shutdown”“-s”“,“-t”,ntime])

但它不起作用,如果我双击file.py并尝试此部分,脚本就会关闭,但如果在空闲状态下执行,我会收到以下错误:

Traceback (most recent call last):
  File "C:\Users\User\Desktop\shutdown.py", line 17, in <module>
    subprocess.call(["shutdown" "-s", "-t", ntime])
  File "F:\Programs\python\lib\subprocess.py", line 267, in call
    with Popen(*popenargs, **kwargs) as p:
  File "F:\Programs\python\lib\subprocess.py", line 709, in __init__
    restore_signals, start_new_session)
  File "F:\Programs\python\lib\subprocess.py", line 997, in  _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
>>>


Code:
import subprocess
print('0:Seconds')
print('1:Minutes')
minorsec = input('Want to use minutes or seconds? ')
if minorsec == '0':
    time = input('Type the time to shutdown in seconds: ')
    subprocess.call(["shutdown", "-s", "-t", time])
elif minorsec == '1':
    time = input('Type the time to shutdown in minutes: ')
    ntime = int(time) * 60
    subprocess.call(["c:\\windows\\system32\\shutdown.exe" "-s", "-t", str(ntime)])
else:
    print('Error, Press just 0 or 1')
input('Press Enter to close: ') 
回溯(最近一次呼叫最后一次):
文件“C:\Users\User\Desktop\shutdown.py”,第17行,在
子进程调用([“shutdown”“-s”“,“-t”,ntime])
文件“F:\Programs\python\lib\subprocess.py”,第267行,在调用中
将Popen(*popenargs,**kwargs)作为p:
文件“F:\Programs\python\lib\subprocess.py”,第709行,在_init中__
恢复信号,启动新会话)
文件“F:\Programs\python\lib\subprocess.py”,第997行,在执行子进程中
startupinfo)
FileNotFoundError:[WinError 2]系统找不到指定的文件
>>>
代码:
导入子流程
打印('0:s')
打印('1:Minutes')
minorsec=input('要使用分钟还是秒?')
如果minorsec==“0”:
时间=输入('以秒为单位键入关机时间:')
子进程调用([“shutdown”、“-s”、“-t”、time])
elif minorsec=='1':
时间=输入('以分钟为单位键入关机时间:')
时间=整数(时间)*60
子进程调用([“c:\\windows\\system32\\shutdown.exe”“-s”“,“-t”,str(ntime)])
其他:
打印('错误,只按0或1')
输入('按Enter键关闭:')
问题1:这一行

ntime = time * 60
不会做你认为它会做的事<代码>时间,上一次
输入
调用返回的值是字符串,而不是整数。因此,如果用户键入“15”作为输入,ntime就会变得有些疯狂,比如:“1515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151。这可能是你的核心问题:

将用户的输入从字符串转换回整数:

 ntime = int(time) * 60
问题#2,这是修复#1的副作用:到
subprocess.call的参数列表中的所有值必须是字符串:

time = input('Type the time to shutdown in minutes: ')
ntime = int(time) * 60
subprocess.call(["shutdown" "-s", "-t", str(ntime)])
问题3:不要使用参数列表:

subprocess.call("shutdown.exe -s -t " + str(ntime))
问题1:这一行

ntime = time * 60
不会做你认为它会做的事<代码>时间
,上一次
输入
调用返回的值是字符串,而不是整数。因此,如果用户键入“15”作为输入,ntime就会变得有些疯狂,比如:“1515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151。这可能是你的核心问题:

将用户的输入从字符串转换回整数:

 ntime = int(time) * 60
问题#2,这是修复#1的副作用:到
subprocess.call的参数列表中的所有值必须是字符串:

time = input('Type the time to shutdown in minutes: ')
ntime = int(time) * 60
subprocess.call(["shutdown" "-s", "-t", str(ntime)])
问题3:不要使用参数列表:

subprocess.call("shutdown.exe -s -t " + str(ntime))

请提供代码我在问题中添加了代码请提供代码我在问题中添加了代码我尝试了此操作并收到了几乎相同的错误,只是更改为:文件“C:\Users\User\Desktop\shutdown.py”,第17行,在subprocess.call中([“shutdown”“-s”“,“-t”,ntime])发送至子流程调用([“C:\\windows\\system32\\shutdown.exe”“-s”“,“-t”,str(ntime)])中第17行的文件“C:\Users\User\Desktop\shutdown.py”)此“问题#1”我所说的仍然是代码中的一个合法错误。我看到了最后一个问题:您不需要使用参数列表。只需调用:
subprocess.call(“shutdown.exe-s-t”+str(ntime))
我尝试了这个方法,收到了几乎相同的错误,只是从subprocess.call([“shutdown”-s“,“-t”,ntime]中第17行的文件“C:\Users\User\Desktop\shutdown.py”更改而来发送至子流程调用([“C:\\windows\\system32\\shutdown.exe”“-s”“,“-t”,str(ntime)])中第17行的文件“C:\Users\User\Desktop\shutdown.py”)此“问题#1”我所说的仍然是代码中的一个合法错误。我看到了最后一个问题:您不需要使用参数列表。只需调用:
subprocess.call(“shutdown.exe-s-t”+str(ntime))