I have a path:
myPath = "C:\Users\myFile.txt"
I would like to remove the end path so that the string only contains:
"C:\Users"
So far I am using split, but it just gives me a list, and im stuck at this point.
myPath = myPath.split(os.sep)
I have a path:
myPath = "C:\Users\myFile.txt"
I would like to remove the end path so that the string only contains:
"C:\Users"
So far I am using split, but it just gives me a list, and im stuck at this point.
myPath = myPath.split(os.sep)
The current way to do this (Python > 3.4) is to use the standard library's pathlib module.
>>> import pathlib
>>> path = pathlib.Path(r"C:\Users\myFile.txt")
>>> path.parent
WindowsPath('C:/Users') #if using a Windows OS
>>> print(path.parent)
C:\Users
This has the additional benefit of being cross platform as pathlib will make a path object suited for the current operating system (I am using Windows 10)
Other useful attributes/methods are:
path.name
>> "myFile.txt"
path.stem
>> "myFile"
path.parts
>> ("C:\\", "Users", "myFile.txt")
path.with_suffix(".csv")
>> "myFile.csv"
path.iterdir()
>> #iterates over all files/directories in path location
path.isdir()
>> #tells you if path is file or directory
While it is true that you should not maybe manipulate paths directly, and should use os.path module, sometimes, you may have your path as a string (for example, if your path was inside a text document, xml, etc.).
In such a situation, it might be safe and maybe even convenient to use string operations (as I found in my use case).
An example (assuming you have read your path from a text file, xml, etc. to a variable called path):
directory = "/".join(list(path.split('/')[0:-1]))
The path is split with " / " as a seperator, sliced to remove the last item in the list, in OPs case "myFile.txt", and joined back with " / " as a seperator.
This will give the path with the file name removed.
OP had the path
myPath = "C:\Users\myFile.txt"
He will have
"C:\Users"