【发布时间】:2014-02-14 16:55:13
【问题描述】:
我正在尝试创建一个功能来手动更改 Linux 机器上的日期/时间,在机器上使用 subprocess.call 到 date --set=。我的问题是试图找到一种更简洁/更 Pythonic 的方式将所有内容一起格式化以进入call。
我这样做的原因是因为date 命令需要--set= 后跟一个字符串,而我想不出在subprocess.call 中以正确格式执行此操作的方法。
我知道理想情况下我应该只使用ntpd,但不幸的是这是我现在的要求。非常感谢任何帮助。
def set_system_time(year, month, day, hour, minute, second):
"""Set system time, numeric value formatted as 'YYYY-MM-DD HH:MM:SS'"""
datetime = '--set=' + str(year) + '-' + str(month) + '-' + str(day) \
+ ' ' + str(hour) + ':' + str(minute) + ':' + str(second)
subprocess.call(['date', datetime])
【问题讨论】:
-
使用
datetime模块中的strptime和strftime。您的格式字符串应该大致类似于fmt = '%Y-%m-%d %H:%M:%S'这个问题有示例用法:stackoverflow.com/q/14762518/553404 -
您应该使用不同的界面
def set_system_time(my_datetime),然后使用strftime。这里有一个已删除的答案,我不确定他为什么删除它,因为这是最好的答案。 -
strftime 是一个不错的选择,但不适用于现有的一组参数。如果你得到像作者提出的问题一样的参数(而不是日期时间库),它与纯字符串格式相比没有优势。
标签: python python-2.7 subprocess