第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用python運(yùn)行cmd文件

使用python運(yùn)行cmd文件

瀟瀟雨雨 2023-03-08 09:54:56
我有一個(gè)包含 100 行命令的 cmd 文件“file.cmd”。例子 pandoc --extract-media -f docx -t gfm "sample1.docx" -o "sample1.md" pandoc --extract-media -f docx -t gfm "sample2.docx" -o "sample2.md" pandoc --extract-media -f docx -t gfm "sample3.docx" -o "sample3.md"我正在嘗試使用腳本運(yùn)行這些命令,這樣我就不必轉(zhuǎn)到文件并單擊它。這是我的代碼,它沒(méi)有輸出:file1 = open('example.cmd', 'r') Lines = file1.readlines()# print(Lines)for i in Lines:    print(i)    os.system(i)
查看完整描述

2 回答

?
素胚勾勒不出你

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊

您不需要逐行閱讀 cmd 文件。您可以簡(jiǎn)單地嘗試以下操作:


import os

os.system('myfile.cmd')

或使用子流程模塊:


import subprocess

p = subprocess.Popen(['myfile.cmd'], shell = True, close_fds = True)

stdout, stderr = proc.communicate()

例子:


我的文件.cmd:


@ECHO OFF

ECHO Grettings From Python!

PAUSE

script.py:


import os

os.system('myfile.cmd')

cmd 將打開(kāi):


Greetings From Python!

Press any key to continue ...

您可以通過(guò)以下方式了解返回退出代碼來(lái)調(diào)試問(wèn)題:


import os

return_code=os.system('myfile.cmd')

assert return_code == 0 #asserts that the return code is 0 indicating success!

注意:os.system 通過(guò)在 C 中調(diào)用來(lái)工作,system()命令后最多只能使用 65533 個(gè)參數(shù)(因此這是一個(gè) 16 位問(wèn)題)。再提供一個(gè)參數(shù)將導(dǎo)致返回代碼32512 (which implies the exit code 127).


查看完整回答
反對(duì) 回復(fù) 2023-03-08
?
有只小跳蛙

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊

該subprocess模塊提供了更強(qiáng)大的工具來(lái)生成新進(jìn)程并檢索它們的結(jié)果;使用該模塊優(yōu)于使用此功能 ( os.system('command'))。


因?yàn)樗且粋€(gè)命令文件(cmd),并且只有 shell 可以運(yùn)行它,那么 shell 參數(shù)必須設(shè)置為 true。由于您將 shell 參數(shù)設(shè)置為 true,因此命令需要是字符串形式而不是列表。


使用Popen生成新進(jìn)程的方法和等待該進(jìn)程的通信(您也可以將其超時(shí))。如果您希望與子進(jìn)程通信,請(qǐng)?zhí)峁㏄IPES(參見(jiàn) mu 示例,但您不必這樣做?。?/p>


下面的代碼適用于 python 3.3 及更高版本


import subprocess


try:

    proc=subprocess.Popen('myfile.cmd', shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE)

    outs, errs = proc.communicate(timeout=15)  #timing out the execution, just if you want, you dont have to!

except TimeoutExpired:

    proc.kill()

    outs, errs = proc.communicate()

對(duì)于舊的 python 版本


proc = subprocess.Popen('myfile.cmd', shell=True)

t=10

while proc.poll() is None and t >= 0:

    print('Still waiting')

    time.sleep(1)

    t -= 1


proc.kill()

在這兩種情況下(python 版本),如果您不需要該timeout功能并且不需要與子進(jìn)程交互,那么只需使用:


proc = subprocess.Popen('myfile.cmd', shell=True)

proc.communicate()


查看完整回答
反對(duì) 回復(fù) 2023-03-08
  • 2 回答
  • 0 關(guān)注
  • 98 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)