欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python如何啟動cmd批處理文件

 更新時間:2024年06月26日 11:36:26   作者:永遠的麥田  
這篇文章主要介紹了python如何啟動cmd批處理文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一、簡單代碼

直接上代碼,理解起來還是比較簡單,os的簡單,控制力比較小,subprocess的可以將相應的cmd輸出獲取到,便于進一步分析運行結果

#import os
#os.system("c:\\sam.bat")


import subprocess
cmd = 'cmd.exe c:\\sam.bat'
p = subprocess.Popen("cmd.exe /c" + "c:\\sam.bat abc", stdout=subprocess.PIPE, stderr=subprocess.STDOUT)


curline = p.stdout.readline()
while(curline != b''):
    print(curline)
    curline = p.stdout.readline()
    
p.wait()
print(p.returncode)

附上sam.bat文件:

echo Hello world!
echo show %1%

運行后輸出如下結果:

b'\r\n'
b'c:\\Python34>echo Hello world! \r\n'
b'Hello world!\r\n'
b'\r\n'
b'c:\\Python34>echo show abc \r\n'
b'show abc\r\n'
0

二、稍復雜的代碼

對于普通的應用以上的代碼已經(jīng)足夠,若是批處理文件比較特別,比如啟動的批處理帶有鍵盤輸入?yún)?shù),這樣上面的代碼就會出現(xiàn)問題,如下的批處理文件:

  • sam.bat
@echo off
echo 顯示命令行參數(shù) %1%
set /p ver=請輸入版本:
echo 輸入的版本為:%ver%

此文件含有兩種參數(shù)輸入:

  • 其一是命令行參數(shù)
  • 其二是鍵盤輸入?yún)?shù)

要求用戶在執(zhí)行過程中輸入版本號,若是用之前的代碼,

你會發(fā)現(xiàn)程序總是沒有輸入提示,而當你輸入完成后,提示及結果會一并出來

究其原因是由于讀出來的數(shù)據(jù)readline()是以回車換行為標志的

提示語句沒有提示換行,因此直到操作完成后才能讀取到提示文字

明白了原因:

改進的方法也就出來了,每次只讀取單個字符并顯示,直到讀不到為止,print這樣的函數(shù)默認換行并且立即輸出,必須加參數(shù)讓其按文件格式打印.另外,之前的數(shù)據(jù)轉(zhuǎn)換是一次性轉(zhuǎn)換,一般不會出現(xiàn)異常,單個字節(jié)讀取對于中文字而言轉(zhuǎn)換會出異常,必須專門進行處理

以下為修改的代碼:

  • sam.py
import subprocess
cmd = 'cmd.exe c:\\sam.bat'
p = subprocess.Popen("cmd.exe /c" + "c:\\sam.bat abc", stdout=subprocess.PIPE, stderr=subprocess.STDOUT)  


byte_data = p.stdout.read(1)    

word_data = b''                 
while(byte_data != b''):
    word_data += byte_data
    try:
        showdata = word_data.decode('gb2312') 

        print(showdata, end="", flush=True) 
        word_data = b''
    except Exception as e:
        #print(e)
        a=0
    byte_data = p.stdout.read(1)
    
p.wait()    
print(p.returncode)

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 手把手帶你了解python多進程,多線程

    手把手帶你了解python多進程,多線程

    這篇文章主要介紹了python多線程與多進程及其區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2021-08-08
  • python導出chrome書簽到markdown文件的實例代碼

    python導出chrome書簽到markdown文件的實例代碼

    python導出chrome書簽到markdown文件,主要就是解析chrome的bookmarks文件,然后拼接成markdown格式的字符串,最后輸出到文件即可。下面給大家分享實例代碼,需要的朋友參考下
    2017-12-12
  • Python Django中間件使用原理及流程分析

    Python Django中間件使用原理及流程分析

    這篇文章主要介紹了Python Django中間件使用原理及流程分析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • python安裝本地whl的實例步驟

    python安裝本地whl的實例步驟

    在本篇文章里小編給大家整理的是關于python安裝本地whl的實例步驟,有需要的朋友們可以學習下。
    2019-10-10
  • Python使用SciencePlots庫繪制學術圖表詳解

    Python使用SciencePlots庫繪制學術圖表詳解

    這篇文章主要介紹了Python使用SciencePlots庫繪制學術圖表,SciencePlots提供了一系列預設的科學繪圖樣式,能夠幫助研究人員輕松創(chuàng)建專業(yè)的學術圖表,需要的朋友可以參考下
    2025-04-04
  • Python數(shù)據(jù)結構與算法之完全樹與最小堆實例

    Python數(shù)據(jù)結構與算法之完全樹與最小堆實例

    這篇文章主要介紹了Python數(shù)據(jù)結構與算法之完全樹與最小堆,結合實例形式分析了Python完全樹定義及堆排序功能實現(xiàn)相關操作技巧,需要的朋友可以參考下
    2017-12-12
  • Django+python服務器部署與環(huán)境部署教程詳解

    Django+python服務器部署與環(huán)境部署教程詳解

    這篇文章主要介紹了Django+python服務器部署與環(huán)境部署教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • 用Python實現(xiàn)校園通知更新提醒功能

    用Python實現(xiàn)校園通知更新提醒功能

    今天小編就為大家分享一篇用Python實現(xiàn)校園通知更新提醒功能,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 深入了解python全局變量,局部變量和命名空間

    深入了解python全局變量,局部變量和命名空間

    這篇文章主要為大家介紹了python全局變量,局部變量和命名空間,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • 在Python中關于中文編碼問題的處理建議

    在Python中關于中文編碼問題的處理建議

    這篇文章主要介紹了幾種在Python中關于中文編碼問題的處理方法,包括在使用Unicode編碼時碰到的異常等,需要的朋友可以參考下
    2015-04-04

最新評論