0


长话短说。我有这个功能:

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 上)。

如果您有一些建议,那就太好了。
谢谢

4

2 回答 2

1

如前所述,您可以使用:

原始字符串 r" 字符串 "

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

也应该可以使用 """ 字符串 """

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

也许我也可以参考 Stack 上的这个答案: what-exactly-do-u-and-rstring-flags..

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

于 2013-02-28T11:45:09.517 回答
0

我认为您的问题不是使用 os.path 而不是转义/转义字符串。
这个功能会更好吗?

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)
于 2013-02-28T12:01:50.563 回答