J'ai écrit un script dans Python 2.6.2 qui scanne un répertoire pour les SVG et les redimensionne s'ils sont trop grands. J'ai écrit ceci sur ma machine à la maison (Vista, Python 2.6.2) et ai traité quelques dossiers sans problèmes. Aujourd'hui, j'ai essayé ceci sur mon ordinateur de travail (XP SP2, Python 2.6.2) et je reçois IOErrors pour chaque fichier, même si les fichiers sont dans le répertoire. Je pense que j'ai tout essayé, et je ne sais pas où aller à partir d'ici. Je suis un débutant donc cela peut être quelque chose de simple. Toute aide serait appréciée.IOError "aucun fichier ou dossier de ce type" même si des fichiers sont présents
import xml.etree.ElementTree as ET
import os
import tkFileDialog
#--------------------------------------
#~~~variables
#--------------------------------------
max_height = 500
max_width = 428
extList = ["svg"]
proc_count = 0
resize_count = 0
#--------------------------------------
#~~~functions
#--------------------------------------
def landscape_or_portrait():
resize_count +=1
if float(main_width_old)/float(main_height_old) >= 1.0:
print "picture is landscape"
resize_width()
else:
print "picture is not landscape"
resize_height()
return
def resize_height():
print "picture too tall"
#calculate viewBox and height
viewBox_height_new = max_height
scaleFactor = (float(main_height_old) - max_height)/max_height
viewBox_width_new = float(main_width_old) * scaleFactor
#calculate main width and height
main_height_new = str(viewBox_height_new) + "px"
main_width_new = str(viewBox_width_new) + "px"
viewBox = "0 0 " + str(viewBox_width_new) + " " + str(viewBox_height_new)
inputFile = file(tfile, 'r')
data = inputFile.read()
inputFile.close()
data = data.replace(str(tmain_height_old), str(main_height_new))
data = data.replace(str(tmain_width_old), str(main_width_new))
#data = data.replace(str(tviewBox), str(viewBox))
outputFile = file(tfile, 'w')
outputFile.write(data)
outputFile.close()
return
def resize_width():
print "picture too wide"
#calculate viewBox width and height
viewBox_width_new = max_width
scaleFactor = (float(main_width_old) - max_width)/max_width
viewBox_height_new = float(main_height_old) * scaleFactor
#calculate main width and height
main_height_new = str(viewBox_height_new) + "px"
main_width_new = str(viewBox_width_new) + "px"
viewBox = "0 0 " + str(viewBox_width_new) + " " + str(viewBox_height_new)
inputFile = file(tfile, 'r')
data = inputFile.read()
inputFile.close()
data = data.replace(str(tmain_height_old), str(main_height_new))
data = data.replace(str(tmain_width_old), str(main_width_new))
#data = data.replace(str(tviewBox), str(viewBox))
outputFile = file(tfile, 'w')
outputFile.write(data)
outputFile.close()
return
#--------------------------------------
#~~~operations
#--------------------------------------
path = tkFileDialog.askdirectory()
for tfile in os.listdir(path):
#print tfile
t2file = tfile
if tfile.find(".") >= 0:
try :
if t2file.split(".")[1] in extList:
print "now processing " + tfile
tree = ET.parse(tfile)
proc_count+=1
# Get the values of the root(svg) attributes
root = tree.getroot()
tmain_height_old = root.get("height")
tmain_width_old = root.get("width")
tviewBox = root.get("viewBox")
#clean up variables, remove px for float conversion
main_height_old = tmain_height_old.replace("px", "", 1)
main_width_old = tmain_width_old.replace("px", "", 1)
#check if they are too large
if float(main_height_old) > max_height or float(main_width_old) > max_width:
landscape_or_portrait()
except Exception,e:
print e
il serait plus utile si vous n'utilisez pas try-excepté là mais juste nous a montré ce qui cause l'erreur. – SilentGhost