Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Remove Xcode duplicated simulators
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
from subprocess import Popen, PIPE
from subprocess import call
# Change this to True to see what will be deleted without deleting anything
DRY_RUN = False
p = Popen(["xcrun","simctl","list","devices"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
output, err = p.communicate(b"input data that is passed to subprocess' stdin")
blocks = re.split("(--\s+.*?)\s+--",output)
dic = {}
for block in blocks:
if block.startswith("--"):
print "Block:", block
foundSims = {}
content = blocks[i+1]
lines = content.split("\n")
for line in lines:
line = line.strip()
if len(line) > 0:
match = re.match("(.*?)\(",line)
if match:
devicename =
if foundSims.has_key(devicename):
idMatch = re.match(".*?\((.*?)\).*",line).group(1)
print "Would delete", line
print "Deleting", line
call(["xcrun", "simctl", "delete", idMatch])
foundSims[devicename] = True
print "Keeping", line
i = i+1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment