python subprocess

01Feb09

I dag var första gången på länge som jag skrev någon kod, och valet av språk är lite udda för mig då det blev python. Jag började det dryga arbetet med att porta ett script från Lua till Python då jag än en gång störde mig på alla pythons lustigheter. Nåja jag fick lära mig lite om subprocesser i python.

def Convert(self, IMAGE):
newfile = "%s%s%s%s"%(self.dest, self.prefix, self.lastImgValue, ".jpg")
cmdConvert = "-resize 450x450 %s %s"%(IMAGE, newfile)
cmdComment = "-comment %s %s %s"%(self.copyright, newfile, newfile)

#först skala bilden
try:
ret = subprocess.call("convert "+cmdConvert, shell=True)
if ret >sys.stderr, "Terminated by signal: ", -ret
else:
print >>sys.stderr, "Ret: ", ret
except e:
print >>sys.stderr, "Exec failed: ", e

#Sedan lägga till en copyrightkommentar
try:
ret = subprocess.call("convert "+cmdComment, shell=True)
if ret >sys.stderr, "Terminated by signal: ", -ret
else:
print >>sys.stderr, "Ret: ", ret
except e:
print >>sys.stderr, "Exec failed: ", e

#lägga till IPTC (metadata) i filen
cmdIPTC = "-profile 8BIMTEXT:iptc.txt %s"%(newfile)
try:
ret = subprocess.call("mogrify "+cmdIPTC, shell=True)
if ret >sys.stderr, "Terminated by signal: ", -ret
else:
print >>sys.stderr, "Ret: ", ret
except e:
print >>sys.stderr, "Exec failed: ", e

#uppräkning
self.lastImgValue=int(self.lastImgValue)+1

“Motsvarande” kod i Lua (utan exception)

local newImg=string.format("%s%s%03i.jpg",tblCfg.destDir, tblCfg.filePrefix, tblCfg.lastImgId)
local cmdStr=string.format("convert -resize 450x450 %s %s", Src, newImg)
local cmdStr2=string.format("convert -unsharp %i %s %s", tblCfg.usmVal, newImg, newImg)
local cmdStr3=string.format("convert -comment %s %s %s", tblCfg.copyrigts, newImg, newImg)
--gör det möjligt att lägga till grundlägande iptc-data i filen
local cmdStr4=string.format("mogrify -profile 8BIMTEXT:iptc.txt %s", newImg)

print(cmdStr)
os.execute(cmdStr)

if tblCfg.usmVal > "0" then
print(cmdStr2)
os.execute(cmdStr2)
end

print(cmdStr3)
os.execute(cmdStr3)

print(cmdStr4)
os.execute(cmdStr4)

--räknar upp senatse bilden
tblCfg.lastImgId=tblCfg.lastImgId+1

Källkod kommer så fort jag fixat till det sista och putsat koden lite.

//Fredrik



No Responses Yet to “python subprocess”

  1. Leave a Comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: