代码之家  ›  专栏  ›  技术社区  ›  WDR

如何在windows10中手动停止Python程序?

  •  1
  • WDR  · 技术社区  · 4 年前

    try-except spyder, sublima3, vs-code 但没有人能阻止它跑后。我如何修复我的代码,我可以停止它按下停止按钮?

    import time 
    import datetime
    import requests
    import pandas as pd
    import os, sys
    
    
    path = 'C:/Users/Admin/Desktop/filter/crawled/'
    #list_file = str(os.listdir(path))
    list_file = list(set([f for f in os.listdir (path)]))
    list_file.sort(key=lambda x: os.stat(os.path.join(path, x)).st_mtime)
    xlsx_file = []
    for item in list_file:
        if item.endswith('.xlsx'):
            xlsx_file.append(item)
    while(datetime.datetime.now().time() >= datetime.time(8,30,00) and datetime.datetime.now().time() <= datetime.time(15,30,00) ):
        try:
            name_file = path + str(datetime.datetime.now()).replace(':','-').replace(' ','_')
            point_index = name_file.find('.')
            name_file = name_file[:point_index ] + '.xlsx'
            link = 'http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0'
            resp = requests.get(link)
            output = open(name_file, 'wb')
            output.write(resp.content)
            output.close()    
        
            xl = pd.ExcelFile(name_file)
            print(xl.sheet_names)
            df1 = xl.parse()
            df1.columns = df1.iloc[1]
            df1 = df1.drop(1)
            print(df1.iloc[0][0])
            df1 = df1.drop(0)
            volume = 1000
            volume_str = 'حجم'
            name_str = 'نام'
            df1_volume = df1[df1[volume_str] > 1000][name_str]
            
            time.sleep(5)
            
        except:
            continue
    
    2 回复  |  直到 4 年前
        1
  •  3
  •   Puneet Singh    4 年前

    这里的问题是,您通过编写以下内容绕过了所有异常:

    except:
        continue
    
    # which is equivalent to:
    except BaseException:
        continue
    

    KeyBoardInterrupt 以及为什么不能通过使用Ctrl+C(键盘中断)可靠地停止它的原因。

    虽然这是一个糟糕的做法,但你可能想要的是:

    except Exception:
        continue
    

    Exception 不包括 KeyboardInterrupt

    检查异常层次结构 here (Python docs)


    一个好的做法是在较小的代码块上处理异常,并处理特定的异常,因为您有理由相信数据可能不合适。

        2
  •  0
  •   Ujjwal Dash    4 年前

    要停止您的程序,在windows中只需按 + C .

    在Unix风格的shell环境中,可以按 + 暂停当前控制控制台的进程。