【问题标题】:How to tell python not to interpret hash symbol as comment?如何告诉python不要将哈希符号解释为注释?
【发布时间】:2017-07-27 21:25:40
【问题描述】:

我想通过用 python 编写的 os.system 命令打开和关闭 cron 作业。基本上,使用 sed 命令注释/取消注释 crontab 行以控制作业调度。

但是当我把这个命令如下所示时,python 解释为 # 作为注释之后的文本。

import os
os.system("crontab -l | sed '/^\*.*heightSQL.py/s/^/#/' | crontab -")

有没有办法告诉python不要将#解释为注释符号?

【问题讨论】:

  • 为什么需要井号?
  • 在字符串文字中,Python 本身已经忽略了哈希。这只是另一个角色。
  • 可能是你的编辑器显示不正确,但python会理解。
  • 我认为是您的命令无效:尝试os.system("echo sed '/^\*.*heightSQL.py/s/^/#/'"),您会看到# 可以。
  • @jonrsharpe 不幸的是,它在将哈希运行到命令中时不会将其视为另一个字符,如图所示。例如, print ("#John") 如你所说的给出输出#John,但在这种特殊情况下不是

标签: python sed comments crontab os.system


【解决方案1】:

您对井号没有问题,但您的引用不正确。试试这个:

os.system(r"crontab -l | sed '/^\*.*heightSQL.py/s/^/#/' | crontab -")

顺便说一句:你确定crontab -lcrontab - 已经运行时产生正确的输出吗?我不是。但这不是重点。

【讨论】:

  • 澄清更改是 r'raw string' 字面量会很有帮助,需要一段时间才能发现它。
  • 您发现它的时间越长,您就越记得它;-)(我只是在开玩笑......)
  • 它的工作,唯一的事情是我需要运行它而不是 sudo。
猜你喜欢
  • 1970-01-01
  • 2013-05-28
  • 2011-11-07
  • 1970-01-01
  • 2018-08-05
  • 1970-01-01
  • 2013-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多