求解!os.system()
# 请各位大神帮帮忙!"""求解:os.system()会创建一个子进程并在子进程里执行os.system()里的命令,我想在同一个进程里执行两个os.system命令该怎么解决?"""
# 假如:我有个需要输入ip地址和端口号的命令和一个配对码的命令。我必须要输入ip地址和端口号的命令才会提示要输入配对码。如果我用两个os.system(),他会创建两个进程。第二个os.system()的内容就无法输入到该输入的地方了。求解决!!!
import os
import time
os.system('adb pair ip地址和端口号')
time.sleep(3)
os.system('配对码')
time.sleep(3)
os.system('adb connect ip地址和端口号')
您可以使用 subprocess 模块来执行多个命令并在同一个进程中进行交互。
下面是一个示例代码,其中使用了 subprocess.Popen() 函数来创建子进程,并通过 communicate() 方法在父进程和子进程之间进行通信。
import subprocess
# 执行第一个命令
process1 = subprocess.Popen(['adb', 'pair', 'ip地址和端口号'], stdin=subprocess.PIPE)
process1.communicate()# 等待第一个命令执行完毕
# 执行第二个命令
process2 = subprocess.Popen(['配对码'], stdin=subprocess.PIPE)
process2.communicate()# 等待第二个命令执行完毕
# 执行第三个命令
process3 = subprocess.Popen(['adb', 'connect', 'ip地址和端口号'], stdin=subprocess.PIPE)
process3.communicate()# 等待第三个命令执行完毕
在上述代码中,首先使用 subprocess.Popen() 创建了子进程 process1,然后使用 communicate() 方法等待第一个命令执行完毕。接着执行第二个命令,再次使用 communicate() 等待第二个命令执行完毕。最后执行第三个命令,并使用 communicate() 方法等待第三个命令执行完毕。
这样,您就可以在同一个进程中执行多个命令,并确保输入的交互信息正确传递到命令行提示符。
希望这个解决方案对您有所帮助!如有任何其他问题,请随时向我提问。 在你的情况下,建议你使用 subprocess 模块的 Popen 对象。这样你可以更好地控制你的子进程。你可以发送命令,并且从子进程读取或写入数据。这可能对你来说是最好的选择,因为你可以将第二个命令(配对码)发送到第一个进程。
以下是如何使用 subprocess 模块来做到这一点的代码:
import subprocess
# 启动第一个命令
p = subprocess.Popen(['adb', 'pair', 'ip地址和端口号'], stdin=subprocess.PIPE)
# 等待一段时间
time.sleep(3)
# 将配对码发送到进程
p.communicate(input='配对码')
# 等待进程结束
p.wait()
# 执行最后一个命令
os.system('adb connect ip地址和端口号')
这段代码中, Popen 构造函数创建一个新的进程,然后启动你的 adb pair 命令。你可以使用 Popen 对象的 communicate 方法将配对码发送到这个进程。最后,你可以使用 os.system 运行你的最后一个命令。
请注意: input 参数到 communicate 方法应该是字节类型,而不是字符串。如果你的配对码是字符串,你需要在传递给 communicate 之前将其编码为字节,像这样: '配对码'.encode() 。
另外,你可能需要自行调整这个代码以满足你的特定需求,例如错误处理和超时。 如果你想在同一个进程里执行两个os.system命令,你有几种方法可以尝试:
你可以用分号(;)或者和号(&)来分隔你的命令,这样它们会在同一个子进程里顺序执行。
例如:
import os
os.system("adb pair ip地址和端口号; 配对码; adb connect ip地址和端口号")
你可以用subprocess模块来创建一个子进程,并用shell=True参数来允许你执行多个命令。
例如:
import subprocess
subprocess.check_call("adb pair ip地址和端口号; 配对码; adb connect ip地址和端口号", shell=True)
你可以用os.chdir函数来改变当前工作目录,然后再执行你的命令。
例如:
import os
os.system("adb pair ip地址和端口号")
os.chdir("path") # 这里填写你要切换的目录
os.system("配对码")
os.system("adb connect ip地址和端口号")
希望这对你有帮助。如果你还有其他问题,欢迎继续提问。 Ewan-Ahiouy 发表于 2023-7-1 07:03
您可以使用 subprocess 模块来执行多个命令并在同一个进程中进行交互。
下面是一个示例代码,其中使用了 ...
谢谢。感谢大佬解惑! isdkz 发表于 2023-7-1 08:08
在你的情况下,建议你使用 subprocess 模块的 Popen 对象。这样你可以更好地控制你的子进程。你可以发送命 ...
感谢!感谢! 陶远航 发表于 2023-7-1 09:31
如果你想在同一个进程里执行两个os.system命令,你有几种方法可以尝试:
你可以用分号(;)或者和号(& ...
谢谢!谢谢! 君无泪 发表于 2023-7-1 11:42
谢谢。感谢大佬解惑!
{:10_266:} Ewan-Ahiouy 发表于 2023-7-1 13:04
gpt大军…… 歌者文明清理员 发表于 2023-7-1 15:30
gpt大军……
我想要c币{:10_254:}
页:
[1]