Python os.path.commonprefix - is there a path oriented function?

2024/9/24 22:33:52

So I have this python code:

print os.path.commonprefix([r'C:\root\dir',r'C:\root\dir1'])

Real Result

C:\root\dir

Desired result

C:\root

Question 1

Based on os.path.commonprefix documentation:
Return the longest path prefix (taken character-by-character)

Is there a similar function that:
Return the longest path prefix (taken dir by dir)

Question 2

if commonprefix is implemented in os.path why isn't it path oriented, meaning return my desired result and not the real one?

Note:

I can implement this easily by myself but if it is already implemented why not using it?

Answer

is there a path oriented function?

no and yes. commonprefix() can work with arbitrary sequences, not just strings.


Split the path into components and call commonprefix() on that e.g.:

>>> import os
>>> from pathlib import PureWindowsPath
>>> a, b = map(PureWindowsPath, [r'C:\root\dir', r'C:\root\dir1'])
>>> PureWindowsPath(*os.path.commonprefix([a.parts, b.parts]))
PureWindowsPath('C:/root')
https://en.xdnf.cn/q/71649.html

Related Q&A

Importing Stripe into Django - NameError

I cant seem to figure out how to import Stripe into my Django project. Im running Python 2.7.3 and I keep receiving NameError at /complete/ global name. stripe is not defined.Even when I just open up T…

getting line-numbers that were changed

Given two text files A,B, what is an easy way to get the line numbers of lines in B not present in A? I see theres difflib, but dont see an interface for retrieving line numbers

How to subclass a subclass of numpy.ndarray

Im struggling to subclass my own subclass of numpy.ndarray. I dont really understand what the problem is and would like someone to explain what goes wrong in the following cases and how to do what Im t…

How to ignore an invalid SSL certificate with requests_html?

So basically Im trying to scrap the javascript generated data from a website. To do this, Im using the Python library requests_html. Here is my code :from requests_html import HTMLSession session = HTM…

Fabric asks for root password

I am using Fabric to run the following:def staging():""" use staging environment on remote host"""env.user = ubuntuenv.environment = stagingenv.hosts = [host.dev]_setup_pa…

Beautifulsoup results to pandas dataframe

The below code returns me a table with the following resultsr = requests.get(url) soup = bs4.BeautifulSoup(r.text, lxml)mylist = soup.find(attrs={class: table_grey_border}) print(mylist)results - it st…

XGBoost CV and best iteration

I am using XGBoost cv to find the optimal number of rounds for my model. I would be very grateful if someone could confirm (or refute), the optimal number of rounds is: estop = 40res = xgb.cv(params, d…

Whats the correct way to implement a metaclass with a different signature than `type`?

Say I want to implement a metaclass that should serve as a class factory. But unlike the type constructor, which takes 3 arguments, my metaclass should be callable without any arguments:Cls1 = MyMeta()…

Python -- Regex -- How to find a string between two sets of strings

Consider the following:<div id=hotlinklist><a href="foo1.com">Foo1</a><div id=hotlink><a href="/">Home</a></div><div id=hotlink><a…

Kivy TextInput horizontal and vertical align (centering text)

How to center a text horizontally in a TextInput in Kivy?I have the following screen:But I want to centralize my text like this:And this is part of my kv language:BoxLayout: orientation: verticalLabe…