我有代码打印激活动作时保存的图像快照的最新文件路径,我正在尝试使用此文件路径作为我代码的下一部分的输入,该代码将图像转换为仅保留蓝色斑点。感谢任何帮助,我是新手代码。
#!/bin/bash/python
import os
from subprocess import check_call
path = '/..'
os.chdir(path)
files = sorted(os.listdir(os.getcwd()), key=os.path.getmtime)
newest = files[-1]
if newest == "Thumbs.db":
'newest = files[-1]
newest = [path+"/"+newest]
a = newest
print newest
#####转换为蓝色blob
check_call(["sudo","convert","imgIn.jpg", "-posterize","2","imgOut.jpg"])
check_call([ "sudo",'convert', 'imgIn.jpg', '-matte', '(', '+clone', '-fuzz', 57%', '-opaque', 'black', '-transparent', 'blue', ')', '-compose', 'DstOut', '- composite', 'imgOut.jpg'])
如何使用最新的文件路径imgIn.jpg?
答案 0 :(得分:1)
编写一个名为get_latest_file()
的函数:
from os.path import isabs, getmtime
from os import getcwd, listdir, path
def get_latest_file(p):
if not isabs(p):
p = path.join(getcwd(), p)
files = sorted([path.join(p, x) for x in listdir(p)], key=getmtime)
return (files and files[-1]) or None
这将为您提供按修改时间排序的最新文件,并返回给定目录的最新/最新匹配文件。
注意:在上面的函数中需要注意的一件事是你需要建立一个绝对路径列表,以使排序键getmtime()
正常工作,否则它将抛出{ {1}}(s)因为OSError
为您提供了一个"名称列表"在给定目录中作为相对名称。
示例:强>
os.listdir()
然后,您可以将结果传递给get_latest_file("images")
来电:
check_output()
更新你可以然后通过编写另一个名为latest_image = get_latest_file("images")
check_call(["sudo", "convert", latest_image, "-posterize", "2", "imgOut.jpg"])
的函数来完成此操作:
convert_image()
更新#2:就传递from os.path impomrt splitext
from subprocess import check_call
def convert_image(inf):
base, ext = splitext(inf)
outf = "{0:s}-converted{1:s}".format(base, ext)
check_call(["sudo", "convert", inf, "-posterize", "2", outf])
的路径而言,您可能有三种选择:
get_latest_file()
旁注:您的Shebang不太正确;它应该是:IMAGE_PATH = "/path/to/images" # hard coded
image_path = raw_input("Enter path to image: ") # prompt user
image_path = sys.argv[1] # from the command line
参考文献: