不正确地创建带时间戳的文件名

时间:2017-11-18 01:41:27

标签: python raspberry-pi

我正在使用树莓派和python脚本从连接到pi的相机捕获图像。我有一个调用脚本的任务调度程序,脚本进行与摄像头连接的命令行调用。我正在尝试让它创建一个新文件,标题为从python的datetime模块中获取的时间戳。

我遇到的问题是它不能同时打印。我可以创建一个只有日期时间戳的文件;我可以用时间创造一个。但是,当我尝试将两者结合时,文件不会被创建,我不知道为什么。是因为文件名最终太长了吗?

我尝试了以下代码的多种变体:

import os

import time
import datetime

ts = time.time()
st = datetime.datetime.fromtimestamp(ts).strftime("%y-%m-%d_%H:%M:%S")

sys_call = 'fswebcam -r 1280x720 /home/pi/python/projectx_images/%s' %st

os.system(sys_call)

我也试过使用datetime.now()无济于事。具体来说,如果我尝试st = datetime.datetime.fromtimestamp(ts).strftime("%y-%m-%d')st = datetime.datetime.fromtimestamp(ts).strftime("%H:%M:%S'),那么它可以正常工作,但不能同时使用。

2 个答案:

答案 0 :(得分:1)

也许使用Python在这里有点过分。由于您的任务调度程序在调用Python时可能已经在调用shell,因此让我们让shell完成工作。

将此命令用于命令调度程序:

fswebcam -r 1280x720 /home/pi/python/projectx_images/$(date +%Y-%m-%d_%H:%M:%S)

答案 1 :(得分:0)

...假设

st = datetime.datetime.fromtimestamp(ts).strftime("%y-%m-%d_%H:%M:%S') <--- close with " instead of '

不是你的问题......我使用了以下代码,它对我有用。

ti = datetime.datetime.utcfromtimestamp(time.time()).strftime("%y-%m-%d_%H:%M:%S")

...输出

'17-11-18_01:47:48'

注意:此输出为UTC +0:00,因此您需要对其应用其他操作才能将其带到您的时区。由于time.time()以秒为单位返回UNIX纪元时间,因此您需要以相对于UTC +0:00(以秒为单位)更快/更慢的时区来缩短时间。

即。如果你在美国东部时间,那么你可以在utcfromtimestamp()申请time.time() - 18000来获得你的时区。

ti = datetime.datetime.utcfromtimestamp(time.time() - 18000).strftime("%y-%m-%d_%H:%M:%S")