import re def QuoteForPOSIX(string): '''quote a string so it can be used as an argument in a posix shell According to: http://www.unix.org/single_unix_specification/ 2.2.1 Escape Character (Backslash) A backslash that is not quoted shall preserve the literal value of the following character, with the exception of a <newline>. 2.2.2 Single-Quotes Enclosing characters in single-quotes ( '' ) shall preserve the literal value of each character within the single-quotes. A single-quote cannot occur within single-quotes. ''' return "\\'".join("'" + p + "'" for p in string.split("'")) if __name__ == "__main__": import os filename = "filename with spaces.doc" os.system("ls " + QuoteForPOSIX(filename))