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")

たぶん、私はスタックでこの答えを参照することもできます: 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 に答える