Welcome, guest | Sign In | My Account | Store | Cart
#!/usr/bin/env python

import string
from time import time
from itertools import chain
from random import seed, choice, sample


def mkpasswd(length=8, digits=2, upper=2, lower=2):
    """Create a random password

    Create a random password with the specified length and no. of
    digit, upper and lower case letters.

    :param length: Maximum no. of characters in the password
    :type length: int

    :param digits: Minimum no. of digits in the password
    :type digits: int

    :param upper: Minimum no. of upper case letters in the password
    :type upper: int

    :param lower: Minimum no. of lower case letters in the password
    :type lower: int

    :returns: A random password with the above constaints
    :rtype: str
    """

    seed(time())

    lowercase = string.lowercase.translate(None, "o")
    uppercase = string.uppercase.translate(None, "O")
    letters = "{0:s}{1:s}".format(lowercase, uppercase)

    password = list(
        chain(
            (choice(uppercase) for _ in range(upper)),
            (choice(lowercase) for _ in range(lower)),
            (choice(string.digits) for _ in range(digits)),
            (choice(letters) for _ in range((length - digits - upper - lower)))
        )
    )

    return "".join(sample(password, len(password)))


print mkpasswd()
print mkpasswd(12)
print mkpasswd(digits=3)
print mkpasswd(12, upper=4)

Diff to Previous Revision

--- revision 2 2013-02-23 17:00:52
+++ revision 3 2013-07-31 23:23:02
@@ -1,52 +1,52 @@
-#!/usr/bin/env python
-
-import string
-from time import time
-from itertools import chain
-from random import seed, choice, shuffle
-
-
-def mkpasswd(length=8, digits=2, upper=2, lower=2):
-    """Create a random password
-
-    Create a random password with the specified length and no. of
-    digit, upper and lower case letters.
-
-    :param length: Maximum no. of characters in the password
-    :type length: int
-
-    :param digits: Minimum no. of digits in the password
-    :type digits: int
-
-    :param upper: Minimum no. of upper case letters in the password
-    :type upper: int
-
-    :param lower: Minimum no. of lower case letters in the password
-    :type lower: int
-
-    :returns: A random password with the above constaints
-    :rtype: str
-    """
-
-    seed(time())
-
-    lowercase = string.lowercase.translate(None, "o")
-    uppercase = string.uppercase.translate(None, "O")
-    letters = "{0:s}{1:s}".format(lowercase, uppercase)
-
-    password = list(
-        chain(
-            (choice(uppercase) for _ in range(upper)),
-            (choice(lowercase) for _ in range(lower)),
-            (choice(string.digits) for _ in range(digits)),
-            (choice(letters) for _ in range((length - digits - upper - lower)))
-        )
-    )
-
-    return "".join(sample(password, len(password)))
-
-
-print mkpasswd()
-print mkpasswd(12)
-print mkpasswd(digits=3)
-print mkpasswd(12, upper=4)
+#!/usr/bin/env python
+
+import string
+from time import time
+from itertools import chain
+from random import seed, choice, sample
+
+
+def mkpasswd(length=8, digits=2, upper=2, lower=2):
+    """Create a random password
+
+    Create a random password with the specified length and no. of
+    digit, upper and lower case letters.
+
+    :param length: Maximum no. of characters in the password
+    :type length: int
+
+    :param digits: Minimum no. of digits in the password
+    :type digits: int
+
+    :param upper: Minimum no. of upper case letters in the password
+    :type upper: int
+
+    :param lower: Minimum no. of lower case letters in the password
+    :type lower: int
+
+    :returns: A random password with the above constaints
+    :rtype: str
+    """
+
+    seed(time())
+
+    lowercase = string.lowercase.translate(None, "o")
+    uppercase = string.uppercase.translate(None, "O")
+    letters = "{0:s}{1:s}".format(lowercase, uppercase)
+
+    password = list(
+        chain(
+            (choice(uppercase) for _ in range(upper)),
+            (choice(lowercase) for _ in range(lower)),
+            (choice(string.digits) for _ in range(digits)),
+            (choice(letters) for _ in range((length - digits - upper - lower)))
+        )
+    )
+
+    return "".join(sample(password, len(password)))
+
+
+print mkpasswd()
+print mkpasswd(12)
+print mkpasswd(digits=3)
+print mkpasswd(12, upper=4)

History