我在 Windows 10 的一个文件夹中有 4000 个 csv 文件,每个文件大约有 500 行,我在其中读取文本列和几个标识列,每个文件都在循环中处理并保存。由于系统限制,有时进程会中断。 因此,我不想在处理后保存整个文件,而是想继续附加带有已处理的单个记录的输出 csv 文件。任何时候,如果进程因假设“python 进程”关闭或“系统重新启动”而中断,脚本应自行重新启动,开始处理最后一个文件+最后一个记录并再次开始追加。 我没有管理员权限。
请建议一些有效的方法。流程代码具有 NLP 清理、大量自定义正则表达式和自定义处理。这是非常繁忙的过程。
示例代码:
clean process(df):
some code
def read_save_csv():
logging.debug('start reading files")
files_path="some path"
for file in glob.glob(file_path):
df=pd.read_csv(file)
logging.debug('ended file read')
try:
df_process= clean_process(df)
logging.debug("start saving file" +filename)
except exception as e:
logging.debug("error" + str(e))
read_save()
如果你想在程序关闭并重新启动时保留状态(最后一个文件和记录),那么你必须将状态保存到文件中。如果文件存在,则循环应从最后一个文件继续并记录,否则从头开始。
要在程序退出时保存状态,可以使用以下代码:
import signal
import atexit
def handle_exit(*args):
# save state (last file and record) to file
atexit.register(handle_exit)
signal.signal(signal.SIGTERM, handle_exit)
signal.signal(signal.SIGINT, handle_exit)
它应该与优雅的退出和杀死一起工作。