国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

Python子進(jìn)程subpocess原理及用法解析

瀏覽:79日期:2022-07-17 11:31:37

python的子進(jìn)程嘛,就是利用python打開一個(gè)子進(jìn)程(當(dāng)然像是一句廢話),但是可能和我們理解的不太一樣。

一:如何理解?

我們可能的理解:多開一個(gè)進(jìn)程運(yùn)行某個(gè)python函數(shù)(如果只想實(shí)現(xiàn)這個(gè)功能,請使用multiprocessing包)

正確的理解:python通過shell/cmd 打開一個(gè)新的程序進(jìn)程,而不限于python函數(shù),比如我們可以開一個(gè)“l(fā)s”指令的進(jìn)程列出當(dāng)前文件夾下的文件,這個(gè)“l(fā)s”指令明顯是一個(gè)shell通用函數(shù),而不是python

函數(shù):

# 打開子進(jìn)程運(yùn)行“l(fā)s”。輸出當(dāng)前文件夾下文件<br data-filtered='filtered'>import subprocessp = subprocess.run(['ls'])

二. 如何使用?

當(dāng)我們想單純地利用subprocess打開一個(gè)進(jìn)程運(yùn)行python函數(shù)的時(shí)候,我們甚至要迂回地去做:

比方說這樣:

(1)新建一個(gè)需要運(yùn)行的函數(shù)腳本 test_print.py

import sysdef print_it(a, b , c): print(a) print(b) print(c)if __name__ == '__main__': print_it(sys.argv[1], sys.argv[2], sys.argv[3])

(2)再建一個(gè)腳本,通過傳遞參數(shù)的方式運(yùn)行 test_print.py

import subprocessp = subprocess.run(['python', 'test_print.py', 'a1', 'b2', 'c3'])pp = subprocess.run(['python', 'test_print.py', 'd4', 'e5', 'f6'])

(3) 輸出結(jié)果:

a1

b2

c3

d4

e5

f6

三:一些簡單用法

1. 比方說重定向輸出:

(1)依舊是新建一個(gè)需要運(yùn)行的函數(shù)腳本 test_print.py

import sysdef print_it(a, b , c): print(a) print(b) print(c)if __name__ == '__main__': print_it(sys.argv[1], sys.argv[2], sys.argv[3])

(2)再建一個(gè)腳本,通過傳遞參數(shù)的方式運(yùn)行 test_print.py

import subprocessp = subprocess.Popen(['python', 'test_print.py', 'a1', 'b2', 'c3'], stdout=subprocess.PIPE, shell=True) #shell=True 為必須,否則stdout無法讀出pp = subprocess.Popen(['python', 'test_print.py', 'd4', 'e5', 'f6'], stdout=subprocess.PIPE, shell=True) print(p.stdout.read()) print(pp.stdout.read())

然而此時(shí),輸出的結(jié)果是二進(jìn)制文件

b’a1rnb2rnc3rn’b’d4rne5rnf6rn’

我們需要對此進(jìn)行處理(當(dāng)然你不處理也可以,就是看著別扭)

import subprocessp = subprocess.Popen(['python', 'test_print.py', 'a1', 'b2', 'c3'], stdout=subprocess.PIPE, shell=True) #shell=True 為必須,否則stdout無法讀出pp = subprocess.Popen(['python', 'test_print.py', 'd4', 'e5', 'f6'], stdout=subprocess.PIPE, shell=True) # 用str轉(zhuǎn)化一下就好。print(str(p.stdout.read(), encoding = 'utf8'))print(str(pp.stdout.read(), encoding = 'utf8'))

(3)定向到外部文件

import subprocess# 注意,此步驟為必須f_handler=open(’out.log’, ’w’)p = subprocess.run(['python', 'test_print.py', 'a1', 'b2', 'c3'], stdout=f_handler)pp = subprocess.run(['python', 'test_print.py', 'd4', 'e5', 'f6'], stdout=f_handler)# 一個(gè)錯(cuò)誤用法p_error = subprocess.run(['python', 'test_print.py', 'd4', 'e5', 'f6'], stdout=’out.log’) # 這樣是不行的

我們會(huì)發(fā)現(xiàn),屏幕上什么都不會(huì)顯示,輸出結(jié)果已經(jīng)導(dǎo)入到out.log里面了

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 国产成人综合久久精品红 | 日韩三级视频在线 | 国产成人黄网在线免 | 国产v综合v亚洲欧美大另类 | 亚洲欧美综合网 | 欧美另类性视频在线看 | 亚洲国产日韩女人aaaaaa毛片在线 | 男女午夜视频 | 日本护士一级毛片在线播放 | 久久精品亚洲一区二区 | 国产一级做a爰片久久毛片99 | 碰碰久久 | 久久亚洲私人国产精品va | 在线观看中文字幕国产 | 亚洲欧美激情在线 | 欧美亚洲一区二区三区四 | 日本免费特黄aa毛片 | 国产一区免费在线观看 | 精品国产97在线观看 | 国产精品观看 | 国产午夜免费不卡精品理论片 | 九九综合九九综合 | 日本特级黄毛片毛片视频 | 成年人黄色网址 | 美国免费高清一级毛片 | 特级aaa片毛片免费观看 | 日韩视频免费一区二区三区 | 久草在线影 | 国产高清在线精品二区一 | 亚洲视频一区二区三区 | 欧美人成在线 | 日本精品一区二区三区在线 | 三级色网站| 国产高清在线精品 | 国产日韩欧美一区二区三区综合 | 国产精品久久久 | 欧美在线做爰高清视频 | 一级黄色欧美片 | 欧美二级在线观看免费 | 久久久久久免费精品视频 | yp国产在线观看 |