【发布时间】:2020-02-01 07:26:52
【问题描述】:
我遇到的第一个问题是我不知道如何响应命令提示符。
bat_location = "F:/SteamLibrary/steamapps/common/Terraria"
os.chdir(bat_location)
os.system("TerrariaServer.exe -steam -lobby friends -config serverconfig.txt")
所有这些都有效,但是当我想响应询问我要运行哪个世界的命令提示符时(世界由 1 - n(世界数量)的数字索引)我不知道如何回应它。
我已经查看了所有的谷歌,但代码似乎不起作用。
所以基本上我需要的是当一个 cmd 询问我时:
Choose World:
我想自动回复数字 10。
os.system("10")
这似乎没有任何作用,我也尝试过很多子流程,但我显然迷路了。
感谢您的帮助!
编辑 NR.1:
Welp,现在我已经尝试过了:
bat_location = r'F:\SteamLibrary\steamapps\common\Terraria'
with Popen('TerrariaServer.exe -steam -lobby friends -config serverconfig.txt',
cwd=f'{bat_location}', stdin=PIPE, shell=True) as proc:
proc.stdin.write(b'10\n')
它所做的一切,我根据响应猜测,它只是循环播放。
编辑 NR.2:
我将关闭这个并开始一个新的线程,因为我的问题完全源于原始。
【问题讨论】:
-
看看"Python subprocess and user interaction." 的答案你几乎肯定想使用
subprocess,而不是os.system。 -
好的,所以我尝试使用它:proc = subprocess.Popen(['cd F:/SteamLibrary/steamapps/common/Terraria', 'TerrariaServer.exe -steam -lobby friends -config serverconfig.txt '], stdout=PIPE, stdin=PIPE, stderr=STDOUT) 但它只是抛出一个错误 [WinError 2] 系统找不到指定的文件我错过了什么吗??
-
这是试图运行两个不同的命令;
subprocess函数每个只运行一个命令。要设置工作目录,请使用cwd关键字参数。 -
什么时候在“TerrariaServer.exe etc”之前或之后指定它?
-
cwd必须作为关键字参数在任何位置参数之后给出。但是,您可能希望使用完整路径来运行程序,大概是F:/SteamLibrary/steamapps/common/Terraria/Terraria.exe。
标签: python