convert_YCoordFlipped.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/usr/bin/python
  2. #ConvertYCoordFlipped.py
  3. import plistlib
  4. import os.path
  5. import argparse
  6. import glob
  7. import shutil
  8. #keys in dictionary
  9. metaDataKey = 'metaData'
  10. yCoordFlippedConvertedKey = 'yCoordFlippedConverted'
  11. yCoordFlippedKey = 'yCoordFlipped'
  12. #check if the particle file has been converted
  13. def checkFlippedConvertFlag(plistDict):
  14. if(not plistDict.has_key(metaDataKey)):
  15. return False
  16. else:
  17. metaDict = plistDict.get(metaDataKey)
  18. if(not metaDict.has_key(yCoordFlippedConvertedKey)):
  19. return False
  20. else:
  21. return metaDict.get(yCoordFlippedConvertedKey) is 1
  22. #write flag to indicate to file has been converted
  23. def writeFlippedConvertFlag(plistDict):
  24. metaDict = dict()
  25. metaDict.update(yCoordFlippedConverted = 1)
  26. plistDict.update(metaData = metaDict)
  27. #process file
  28. def processConvertFile(filename):
  29. #print a line to separate files
  30. print ('')
  31. if(not os.path.isfile(filename)):
  32. print(filename + ' dose not exist!')
  33. return
  34. print('Begin process particle file: ' + filename)
  35. fp = open(filename, 'r')
  36. pl = plistlib.readPlist(fp)
  37. if (not pl.has_key(yCoordFlippedKey)):
  38. print('Skip plist file: ' + filename + ' for there is no key for yCoordFlipped,')
  39. else:
  40. if(not checkFlippedConvertFlag(pl)):
  41. backupFileName = filename+'.backup'
  42. print('Write backup file to ' + backupFileName)
  43. shutil.copyfile(filename,backupFileName)
  44. print('converting...')
  45. pl[yCoordFlippedKey] = -pl[yCoordFlippedKey]
  46. writeFlippedConvertFlag(pl)
  47. print('converted...')
  48. print('Write new plist file to ' + filename)
  49. plistlib.writePlist(pl,filename)
  50. else:
  51. print('Skip a converted file ' + filename)
  52. # -------------- entrance --------------
  53. if __name__ == '__main__':
  54. argparser = argparse.ArgumentParser()
  55. argparser.add_argument("file", nargs = "+",help = "specify a file or a patten")
  56. #argparser.add_argument("-r", "--recursive",action = "store_true", help = "recursive folder or not")
  57. args = argparser.parse_args()
  58. for file in args.file:
  59. processConvertFile(file)