这里是痕迹
IOError: [Errno 2] No such file or directory: 'security01/30/15,15:32:58\n.jpg'
#how and why \n come here?
对于这些线路:
^{pr2}$使用的附加行:
(output, err) = p.communicate()
args = ['fswebcam','--no-banner','-r',' 960x720','filename' + str(output) + '.jpg']
subprocess.call(args)
另一行:
mail('mail@mail.com',
'subject',
'body',
'filename' + str(output) + '.jpg')
^{pr2}$date
在其输出的末尾返回一个换行符,因此您需要使用strip()
方法来删除它。在但是,如果您希望在文件名中添加日期/时间戳,最好直接在Python中使用datetime module和strftime函数:
date
命令,以及基本上用于交互式命令行的所有其他命令,都用一个新行终止其输出。在如果这不是您所需要的,那么从子进程调用的输出中修剪最后一行是一件非常常见的事情(在shell中,用
`backticks`
和现代的$(command)
语法替换进程的硬编码默认行为)。在但创建日期字符串并不需要子进程,Python在其标准库中提供了广泛(尽管有点笨拙)的支持,即开箱即用。参见例如here。在
或者,改编成第一个示例片段
^{pr2}$因为斜杠和冒号都是文件名中有问题的字符,所以我用点代替了它们。出于纯粹的美学原因,我还将逗号改为下划线(怀疑;下划线也很难看)。在
我还将生成的文件名切换为使用标准的日期戳命名约定,首先使用一个完整的数字年份,这样文件列表和glob循环以正确的日期顺序生成文件。在
可能应该进一步调整代码,使其在文件名中包含一个正确的ISO 8601日期;然后,如果您想单独解析并重新格式化它以供人类使用,您可以自由地这样做。但是,如果有标准格式,既可以由现有代码读写,也可以被人类毫不含糊地理解,就要避免自定义日期格式。在
相关问题 更多 >
编程相关推荐