【问题标题】:Keyboardinterrupt handeler is not working in pycharm键盘中断处理程序在 pycharm 中不起作用
【发布时间】:2018-10-24 08:20:34
【问题描述】:

我正在尝试使用 CTRL F2 退出该代码,或者通过停止按钮关闭进程,但从不调用 finally 子句。我想当我停止将数据写入文件的过程时。

  for root, dirnames, files in os.walk(r"c:\ahmed\SpeedFT-meter12\peakdata"):
        for name in files:
            timeStamps.append(name.replace('peakdata_','').replace('.bz2',''))
            print(name.replace('peakdata_','').replace('.bz2',''))
    i  = 0
    try:
        for dirpath, dirnames, filenames in os.walk(r"C:\ahmed\SpeedFT-meter12\peakdata"):
                for filename in [f for f in filenames if f.endswith(".bz2")]:
                    path = os.path.join(dirpath, filename)
                    print(path)
                    process_data(path, i)
    except KeyboardInterrupt:
        pass

    finally:
        print("writing data")
        general_pd['TimeStamp'] = TimeStamp
        general_pd['S_strain_HOY'] = S1
        general_pd['S_strain_HMY'] = S2
        general_pd['S_strain_HUY'] = S3
        general_pd['S_strain_ROX'] = S4
        general_pd['S_strain_LOX'] = S5
        general_pd['S_strain_LMX'] = S6
        general_pd['S_strain_LUX'] = S7
        general_pd['S_strain_VOY'] = S8
        general_pd['S_temp_HOY'] = T1
        general_pd['S_temp_HMY'] = T2
        general_pd['S_temp_HUY'] = T3
        general_pd['S_temp_LOX'] = T4
        general_pd['S_temp_LMX'] = T5
        general_pd['S_temp_LUX'] = T6
        writer = pd.ExcelWriter(r'c:\ahmed\median_data.xlsx', engine='xlsxwriter')
        # Convert the dataframe to an XlsxWriter Excel object.
        general_pd.to_excel(writer, sheet_name='Sheet1')
        # Close the Pandas Excel writer and output the Excel file.
        writer.save()

【问题讨论】:

    标签: python pycharm keyboardinterrupt


    【解决方案1】:

    您可能会错过您的 except/finally 关闭的原因是您在 try/except 中中断了脚本(即在 for name in files: 循环期间)

    用最少的代表性示例来调试任何问题总是有帮助的,尝试运行/停止:

    try:
        time.sleep(100)
    except KeyboardInterrupt:
        print('Graceful stop')
    finally:
        print('Cleanup')
    

    如果您对此仍有疑问,请向您的 PyCharm 版本提供完整的异常消息。

    【讨论】:

    • 我写了那个最小的例子,试图通过 CTRL F2 和停止按钮杀死进程,它仍然从不打印优雅停止或清理
    • 你能看看Run → Edit Configurations → <your runner> → Execution → Emulate terminal in console output,检查了吗?
    • 对不起,比不知道如何提供帮助。我刚刚安装了 2018.1.5 CE,无法重现此问题。祝你好运。
    • 你能重写代码,让它与键盘处理程序一起工作吗?\
    猜你喜欢
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多