Как остановить программу Python вручную в Windows 10? - PullRequest
2 голосов
/ 02 августа 2020

В моей программе есть try-except блок кода, который не останавливается после его запуска. Я пробовал spyder, sublima3, vs-code IDE, но ни одна из них не могла остановить его после запуска. Как я могу исправить свой код, чтобы остановить его, нажав кнопку остановки?

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 ]

3 голосов
/ 02 августа 2020

Проблема здесь в том, что вы обойдете все исключения, написав:

except:
    continue

# which is equivalent to:
except BaseException:
    continue

, которое также включает исключение KeyboardInterrupt и причину, по которой вы не можете надежно остановить его, используя Ctrl + C (прерывание клавиатуры).

Хотя это плохая практика, но вы можете захотеть:

except Exception:
    continue

Exception не включает KeyboardInterrupt, поэтому Ctrl + C остановит его всегда.

Проверьте иерархию исключений здесь (Python docs) для получения дополнительной информации.


Хорошей практикой может быть обрабатывать исключения для небольших блоков кода и обрабатывать c особых исключений, когда у вас есть основания полагать, что данные могут быть несоответствующими.

0 голосов
/ 02 августа 2020

Чтобы остановить вашу программу, в windows просто нажмите Control + C.

В среде оболочки в стиле Unix вы можете нажмите CTRL + Z , чтобы приостановить любой процесс, который в данный момент управляет консолью.

...