如何在python中不转义字符串函数参数

时间:2013-02-28 11:25:39

标签: python function parameters escaping os.path


简而言之。 我有这个功能:

def save_screenshot(self, file_destination, picture_format = None)
    file_path_name, file_extension = os.path.splitext(file_destination)
    file_path, file_name = os.path.split(file_path_name)
    (...)

现在,我调用这样的函数:

save_screenshot("C:\Temp\picture.jpg", "JPG")

我知道如何在python中逃避字符串(在“os.path.join”的帮助下),但如果字符串是函数参数,我不知道怎么做。如果我写“C:\\ Temp \\ picture.jpg”或“C:/Temp/picture.jpg”,该功能可以正常工作(在Windows上)。

如果您有一些建议,那会很棒。
感谢

2 个答案:

答案 0 :(得分:1)

如上所述,您可以使用:

Raw String r“string”

save_screenshot(r"C:\Temp\picture.jpg", "JPG")

也应该可以使用“”“string”“”

save_screenshot("""C:\Temp\picture.jpg""", "JPG")

也许我也可以在Stack上引用这个答案: what-exactly-do-u-and-rstring-flags..

这基本上解释了如何使用原始字符串文字来忽略从字符串中的反斜杠派生的转义序列(主要用于regexp)。

答案 1 :(得分:0)

我认为你的问题不是使用os.path而是使用escape / unescape字符串 这个功能会更好吗?

def save_screenshot(self, file_destination, picture_format = None):
    file_name = os.path.basename(file_destination)
    path = os.path.dirname(file_destination)
    base, ext = os.path.splitext(file_name)
    e = ext if picture_format is None else '.%s' % picture_format.lower()
    to_path = os.path.join(path, base + e)
    print(to_path)