在Python中调用外部命令 Python中yield关键字的作用 if __name__ == "__main__": 的作用 在Python中调用外部命令 1. 使用子进程模块 from subprocess import call call(["ls", "-l"]) 2. os模块的system/popen函数 os.system("some_command with args") 将命令和参数传递给系统的shell。这很好,因为您实际上可以以这种方式一次运行多个命令并设置管道和输入/输出重定向。例如: os.system("some_command < input_file | another_command > output_file") stream = os.popen("some_command with args") 将做同样的事情,os.system除了它给你一个类似文件的对象,你可以用来访问该进程的标准输入/输出。还有3种其他的popen变体,它们对i / o的处理方式略有不同。如果您将所有内容都作为字符串传递,那么您的命令将传递给shell; 如果你将它们作为列表传递,那么你不必担心逃避任何事情。 3. subprocess模块的Popen类 这是为了取代它,os.popen但由于如此全面而具有稍微复杂的缺点。例如,: print subprocess.Popen("echo Hello World", shell=True, stdout=subprocess.PIPE).stdout.read() 4. Python 3.5或更高版本,可以使用新subprocess.run功能 >>> subprocess.run(["ls", "-l"]) # doesn't capture output CompletedProcess(args=['ls', '-l'], returncode=0) >>> subprocess.run("exit 1", shell=True, check=True) Traceback (most recent call last): ... subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1 >>> subprocess.run(["ls", "-l", "/dev/null"], stdout=subprocess.PIPE) CompletedProcess(args=['ls', '-l', '/dev/null'], returncode=0, stdout=b'crw-rw-rw- 1 root root 1, 3 Jan 23 16:23 /dev/null\n') Python中yield关键字的作用 if __name__ == "__main__": 的作用