out = subprocess.check_output(command + [video_fn]).decode()
时间: 2024-05-24 09:14:16 浏览: 125
您的问题是关于 Python Subprocess 模块的 check_output() 方法以及其参数 command 和 video_fn。该方法用于运行 shell 命令并获取其输出结果。参数 command 为要执行的 shell 命令及其参数,参数 video_fn 为命令的一个参数,表示要处理的视频文件名。在执行命令后,check_output() 方法会将其输出结果保存在 out 变量中,并将其转换为 Unicode 字符串格式。请问您需要了解哪些方面的信息?
相关问题
怎么优化 out = subprocess.check_output(command + [video_fn]).decode()
对于这个问题,我建议您可以尝试以下几种优化方法:
1. 使用Popen替代check_output
Popen函数可以分别调用程序的标准输出,标准输入和标准出错,而不必等待执行结果。使用此函数,您可以轻松地编写代码以处理超时,流媒体等。
2. 使用字节流作为输出解码
在调用decode()方法之前,使用raw_bytes = subprocess.check_output(command [video_fn])代替 out = subprocess.check_output(command [video_fn])。它将输出作为原始字节流返回,这样输出就不必解码为Unicode字符串。
3. 尝试缓冲传递标准输出
如果您不关心时序,则可以使用缓冲来读取长时间运行的进程的输出。这将使您可以以较小的块获取输出并避免缓冲溢出的问题。
以上是针对此问题的几种建议方法,你可以根据实际情况选择合适的方法来优化你的代码。希望能帮到你!
检查代码中的错误 class ADB_SHELL: def get_ip(self): # 执行adb shell命令并输出结果 subprocess.check_output( ['adb', 'shell', 'udhcpc'] ) subprocess.check_output( ['adb', 'shell', 'udhcpc -i eth1'] ) self.conf = subprocess.check_output( ['adb', 'shell', 'ifconfig'] ).decode() # conf = str(ip).split(r'\r\r\n') # tmp = conf.replace( "\r\r\n", "\n" ) # print( tmp) self.ip = re.findall( r'addr:(.*?) Bcast', str( self.conf ) ) print(self.ip) for self.i in selfip : speed = subprocess.check_output((['adb', 'shell', f'iperf3 -B {self.i} -c 192.168.102.105'])).decode() print(speed.replace("\r\r\n", "\n")) for i in range(5): write_data = subprocess.check_output(['adb', 'shell', 'time dd if=/dev/zero of=/data/test.data bs=128k count=1024']).decode() print(write_data.replace("\r\r\n", "\n")) read_data = subprocess.check_output(['adb', 'shell', 'time dd if=/data/test.data of=/dev/null bs=128k count=1024']).decode() print(read_data.replace("\r\r\n", "\n")) ls = subprocess.check_output( ['adb', 'shell', 'ls /data'] ).decode() print( ls.replace( '\r', ' ' ) ) dl = subprocess.check_output( ['adb', 'shell', 'rm /data/test.data'] ).decode() l = subprocess.check_output(['adb', 'shell', 'ls /data']).decode() print( l.replace( '\r', ' ' ) ) subprocess.check_output( (['adb', 'shell', f'iperf3 -s']) ) def get_ssh(self): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy) for i in self.ip: ssh.connect(hostname='192.168.102.105',port=22,username='root',password='xiayi123456',timeout=30) stdin,stdout,stderr = ssh.exec_command(f'iperf3 -c {i}') print(stdout.read()) # ssh.close() if __name__ == '__main__': # get_ip() # get_ssh() A = ADB_SHELL t1 = threading.Thread(target=A.get_ssh) t2 = threading.Thread(target=A.get_ip) t1.start() t2.start() t1.join() t2.join()
在第12行代码中,将 `selfip` 改为 `self.ip`。此外,第28行代码中的 `ssh.set_missing_host_key_policy` 应该是 `ssh.set_missing_host_key_policy()`。最后,第39行代码中的 `A = ADB_SHELL` 应该是 `A = ADB_SHELL()`,因为 ADB_SHELL 是一个类,需要实例化才能调用其方法。
阅读全文