Since there has been some controversy about the joining syntax used in PEP 428 (filesystem path objects), I would like to run an informal poll about it. Please answer with +1/+0/-0/-1 for each proposal:
- `p[q]` joins path q to path p
- `p + q` joins path q to path p
- `p / q` joins path q to path p
- `p.join(q)` joins path q to path p
I cannot decide with such trivial examples. More realistic examples: --- def read_config(name): home = Path(os.path.expanduser("~")) # pathlib doesn't support expanduser?? with open(home / ".config" / name + ".conf") as f: return fp.read() ---
The join() method has an advantage: it avoids temporary objects (config / ".config" is my example). --- def read_config(name): home = Path(os.path.expanduser("~")) # pathlib doesn't support expanduser?? with open(home.join(".config", name + ".conf")) as f: return fp.read() ---
It should work even if name is a Path object, so Path + str should concatenate a suffix without adding directory separator.
My vote:
- `p[q]` joins path q to path p
home[".config"][name] # + ".conf" ???
-1
- `p + q` joins path q to path p
home + ".config" + name # + ".conf" ???
-1 -> Path + str must be reserved to add a suffix
- `p / q` joins path q to path p
home / ".config" / name + ".conf"
+1: it's natural, but maybe "suboptimal" in performance
- `p.join(q)` joins path q to path p
home.join(".config", name + ".conf")
+0: more efficient, but it may be confusing with str.join() which is very different.
a.join(b, c) : a is the separator or the root directory, depending on the type of a (str or Path).
We should avoid confusion between Path and str methods and operator (a+b and a.join(b)).
Victor