python: rstrip one exact string, respecting order

You're using wrong method. Use str.replace instead:

>>> "Boat.txt".replace(".txt", "")
'Boat'

NOTE: str.replace will replace anywhere in the string.

>>> "Boat.txt.txt".replace(".txt", "")
'Boat'

To remove the last trailing .txt only, you can use regular expression:

>>> import re
>>> re.sub(r"\.txt$", "", "Boat.txt.txt")
'Boat.txt'

If you want filename without extension, os.path.splitext is more appropriate:

>>> os.path.splitext("Boat.txt")
('Boat', '.txt')

Starting with Python 3.9, use .removesuffix():

"Boat.txt".removesuffix(".txt")

On earlier versions of Python, you'll have to either define it yourself:

def removesuffix(s, suf):
    if suf and s.endswith(suf):
        return s[:-len(suf)]
    return s

(you need to check that suf isn't empty, otherwise removing an empty suffix e.g. removesuffix("boat", "") will do return s[:0] and return "" instead of "boat")

or use regex:

import re
suffix = ".txt"
s = re.sub(re.escape(suffix) + '$', '', s)