As far as I know, the Python bindings for Parquet FileMetaData (and constituent parts) don't expose any methods to construct those objects (apart from reading it from a file). For example, creating a FileMetaData object from a list of RowGroupMetaData is not possible.
So I don't think what you describe is currently possible (apart from reading the metadata from the files you want again and appending them, as done in the docs you linked to).
Note that if you use pyarrow to read the dataset using the metadata file, filtering on the file path can be equivalent to filtering on one of the partition columns (depending on what subset you wanted to take). And letting the dataset API doing this filtering can be quite efficient (it will filter the file paths on read), so it might not necessarily be needed to do this in advance.
In the C++ layer, there is a "FileMetaData::Subset" method added recently (for purposes of the datasets API) which can create a new FileMetaData object with a subset of the row groups based on row group index (position in the vector of row groups). But this is a) not exposed in Python (but could be) and b) doesn't directly allow filtering on file path.