关闭后如果日志文件为空,则删除日志文件

2024-05-27

我有一个库函数,可以启动通用后台进程并记录它。

def LaunchAndLog(cmd):
    cmd_args = cmd.split() # Split arguments into array
    logfile = cmd_args[0] + '.log'
    with open(logfile,'w') as log:
        return subprocess.Popen(cmd_args, stdout=log,stderr=log)

主要问题:是否可以修改此函数,以便在关闭日志文件时,如果它是空的是自动删除的吗?

Note:我想要一个解决方案,我可以调用这个函数并忘记它。我不想每次工作结束后都必须记住调用清理函数。

(被拒绝?)想法:我可以用threading启动一个单独的线程来监视进程和/或日志文件,但这似乎比必要的更复杂。

Note:必须在 Python 2.7 中工作,但我也对 Python 3 解决方案感兴趣,如果它更简单的话。


尝试颠倒这个概念,仅在准备好写入时才创建文件。创建您自己的类来处理文件对象:

class MyFile():
    def __enter__(self):
        return self

    def __init__(self, path):
        ''' store the path, but don't actually open the file '''
        self.path = path
        self.file_object = None

    def write(self, s):
        ''' you open the file here, just before writing '''
        if not self.file_object:
            self.file_object = open(self.path, 'w')
        self.file_object.write(self, s)

    def close(self):
        ''' close the file '''
        if self.file_object:
            self.file_object.close()

    def __exit__(self, exc_type, exc_value, exc_traceback):
        self.close()

那么你的with语句变成这样:

with MyFile(logfile) as log:

提议但被拒绝的来自 supergra 的编辑手动合并

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关闭后如果日志文件为空,则删除日志文件 的相关文章

  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • Python 函数可以从作用域之外赋予新属性吗?

    我不知道你可以这样做 def tom print tom s locals locals def dick z print z name z name z guest Harry print z guest z guest print di
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • 每个 X 具有多个 Y 值的 Python 散点图

    我正在尝试使用 Python 创建一个散点图 其中包含两个 X 类别 cat1 cat2 每个类别都有多个 Y 值 如果每个 X 值的 Y 值的数量相同 我可以使用以下代码使其工作 import numpy as np import mat
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip

随机推荐

  • C++,最佳实践,int 还是 size_t? [复制]

    这个问题在这里已经有答案了 可能的重复 何时使用 std size t https stackoverflow com questions 1951519 when to use stdsize t hello 假设使用模式相同 即没有负数
  • 如何在 Durandal 中为我的 shell 视图模型使用类?

    我正在查看 Hot Towel 模板 并试图让它在 TypeScript 中工作 但我在转换 shell 视图模型时遇到了问题 我正在尝试将其转换为 TS 对我来说更有意义的是它应该是一个类 而不是简单地导出如图所示的函数here http
  • 拖动 Window 时无法可靠地调用 LocationChanged

    为了实现对接 我依靠监听 Window LocationChanged 事件来检测在屏幕上拖动的窗口的位置变化 但一位用户报告说 对接在他们的机器上无法工作 事实证明 他们在 Windows 性能选项中禁用了 拖动时显示窗口内容 因此只有在
  • EF 迁移迁移到 0 调用初始创建关闭

    我正在尝试找出将迁移降低到空数据库的语法 就像在初始创建迁移中调用 down 方法一样 有谁知道在迁移中调用 Down 方法的正确语法与此类似 Update Database StartupProjectName Infrastructur
  • 如何更改 WordPress 的 TinyMCE 默认字体

    我在 SO 上看到这个问题 但所有答案都未能具体说明如何改变这一点 我的意思是这样的 答案说 添加这个 但他们无法告诉我在哪里 我的意思是 哪个文件 并且必须是一名火箭科学家才能弄清楚 有人可以解释一下吗就像我五岁一样 好吧 设为 3 我必
  • 根据三列中的值组织行

    导入并获取数据集import numpy as np import matplotlib pyplot as plt import pandas as pd df pd DataFrame DaysExperienceTask 7 8 2
  • WinRT 中的当前文化是错误的

    我正在尝试使用 WinRT 中的当前文化来格式化日期时间值 但CurrentCulture属性似乎并不尊重系统文化 我尝试了以下两个属性 System Globalization CultureInfo CurrentCulture Dis
  • Ruby 中 SecureRandom.urlsafe_base64(8) 的碰撞概率?

    我在用SecureRandom urlsafe base64 8 为了在我的系统中创建 URL 安全的唯一 ID 我想知道如何计算碰撞概率 我将大约 10 000 个这些 id 插入到一个数组中 我想避免检查其中一个键是否已经在数组中 但我
  • JavaScript 的 eval() 什么时候不是邪恶的?

    我正在编写一些 JavaScript 代码来解析用户输入的函数 用于类似电子表格的功能 解析了公式我could将其转换为 JavaScript 并运行eval 就可以得到结果了 然而 我一直回避使用eval 如果我可以避免它 因为它是邪恶的
  • 导航栏是垂直的而不是水平的

    div div
  • 在 Objective C 中使用 NSMutableArray 对象的指针

    当在 cocoa touch 中从 NSMutableArray 检索对象时 下面的代码可以吗 我应该每次分配 alloc 新的 Page 对象还是只是指向它 我是否需要对 Page pageObj 之后执行任何操作 例如将其设置为 nil
  • 使用 .NET WebClient 模拟 XmlHttpRequest

    据我所知XmlHttpRequest我只需使用以下命令即可下载和上传数据send方法 但WebClient有很多方法 我不想要一个的所有功能WebClient 我只想创建一个模拟的对象XmlHttpRequest 但它没有 XSS 限制 我
  • asp.net 检查 imageURL 是否存在

    我正在尝试从另一个 Intranet 站点获取用户的缩略图 但其中一些不遵循预定义的格式 这意味着我想加载默认的缩略图 检查图像 URL 是否有效的最佳方法是什么 根据您获取图像的方式 此方法的变体可能会起作用 img src alt My
  • RestKit:BOOL 值

    我有一个NS ENUM保存清单的状态 这两个属性是Pending and Completed typedef NS ENUM NSUInteger ChecklistStatus Pending Completed 我正在尝试获取状态并将其
  • 将本机图像上传反应为表单数据

    Postman formdata 工作正常 但是返回 http 500 错误 这个块出了什么问题 响应 type default status 500 ok false statusText 未定义 标头 标头 标头 标头 map 确定 f
  • 我可以双击 tkinter 列表框选项来调用 Python 中的函数吗?

    我有一个带有关联的 选择 按钮的列表框 我希望我的 GUI 能够双击任何列表框值来调用此按钮的命令 当选择一个选项并且用户双击窗口中的任何位置时 我的尝试 如下 有效 我希望它仅在双击选择本身 蓝色突出显示的行 时才起作用 做这个的最好方式
  • Pyspark - 根据条件重置累积和列

    我有以下数据框 id date reset cumsum 1001 2023 04 01 false 0 1001 2023 04 02 false 0 1001 2023 04 03 false 1 1001 2023 04 04 fal
  • 如何找到数组中存在的项目的长度/数量? [复制]

    这个问题在这里已经有答案了 可能的重复 函数参数中数组的长度 https stackoverflow com questions 8269048 length of array in function argument 我的数组大小是 5
  • MySQL - 重命名列

    如何重命名 mysql 列help to content在我的桌子上tbl help mysql query ALTER TABLE tbl help CHANGE COLUMN help content 您必须在更改列语句中包含列的定义
  • 关闭后如果日志文件为空,则删除日志文件

    我有一个库函数 可以启动通用后台进程并记录它 def LaunchAndLog cmd cmd args cmd split Split arguments into array logfile cmd args 0 log with op