[Python] How can I replace a substring in a Python pathlib.Path?

Discussão em 'Python' iniciado por Stack, Julho 17, 2025.

  1. Stack

    Stack Membro Participativo

    Is there an easy way to replace a substring within a pathlib.Path object in Python? The pathlib module is nicer in many ways than storing a path as a str and using os.path, glob.glob etc, which are built in to pathlib. But I often use files that follow a pattern, and often replace substrings in a path to access other files:

    data/demo_img.png
    data/demo_img_processed.png
    data/demo_spreadsheet.csv


    Previously I could do:

    img_file_path = "data/demo_img.png"
    proc_img_file_path = img_file_path.replace("_img.png", "_img_proc.png")
    data_file_path = img_file_path.replace("_img.png", "_spreadsheet.csv")


    pathlib can replace the file extension with the with_suffix() method, but only accepts extensions as valid suffixes. The workarounds are:

    import pathlib
    import os


    img_file_path = pathlib.Path("data/demo_img.png")
    proc_img_file_path = pathlib.Path(str(img_file_path).replace("_img.png", "_img_proc.png"))
    # os.fspath() is available in Python 3.6+ and is apparently safer than str()
    data_file_path = pathlib.Path(os.fspath(img_file_path).replace("_img.png", "_img_proc.png"))


    Converting to a string to do the replacement and reconverting to a Path object seems laborious. Assume that I never have a copy of the string form of img_file_path, and have to convert the type as needed.

    Continue reading...

Compartilhe esta Página