The join method allows you to combine multiple paths using an assigned delimiter. For example, on Windows, the separator is a backslash (forward slash), but in Linux, the separator function is assigned to a forward slash. How it works:
import os print( os.path.join ((r’C:Python27Toolspynche’, ’ChipViewer.py’) ) # C:Python27ToolspyncheChipViewer.py
In this example, we have combined the directory and file paths together to get a working path. Note that the join method does not indicate the final result.
The operating system module in Python provides functions for interacting with the operating system. The operating system is part of the standard Python utility modules. This module provides a portable way to use OS dependent functionality. os.path module is a submodule of the OS module in Python used for common path manipulation.
The os.path.join ( () method in Python merges one or more path components intelligently. This method concatenates various path components with exactly one directory separator (’/’) following every non-empty part except the last path component. If the last component of the path to be merged is empty, a directory separator (’/’) is inserted at the end.
If a path component represents an absolute path, all previous joined components are deleted and the join continues from the absolute path component.
Syntax: os.path.join ((path, *paths) Parameter: path: A path-like object representing a file system path. *path: A path-like object representing a file system path. It represents the path components to be joined. A path-like object is either a string or bytes object representing a path. Note: The special syntax *args (here *paths) in function definitions in python is used to pass a variable number of arguments to a function. Return Type: This method returns a string which represents the concatenated path components.

Code: Use of os.path.join (() method to join various path components
# Python program to explain os.path.join (() method # importing os module import os # Path path = "/home" # Join various path components print( os.path.join ((path, "User/Desktop", "file.txt")) # Path path = "User/Documents" # Join various path components print( os.path.join ((path, "/home", "file.txt")) # In above example ’/home’ # represents an absolute path # so all previous components i.e User / Documents # are thrown away and joining continues # from the absolute path component i.e / home. # Path path = "/User" # Join various path components print( os.path.join ((path, "Downloads", "file.txt", "/home")) # In above example ’/User’ and ’/home’ # both represents an absolute path # but ’/home’ is the last value # so all previous components before ’/home’ # will be discarded and joining will # continue from ’/home’ # Path path = "/home" # Join various path components print( os.path.join ((path, "User/Public/", "Documents", "")) # In above example the last # path component is empty # so a directory separator (’/’) # will be put at the end # along with the concatenated value
Output:
/home/User/Desktop/file.txt /home/file.txt /home /home/User/Public/Documents/

Combining path components
In the previous example, I deliberately used a slash "/" to separate path components. This is fine in principle, but not recommended. If you want your application to be cross-platform, this option is not suitable. For example, some older versions of Windows only recognize the slash "" as a separator.
But don’t worry, Python solves this problem perfectly thanks to the os.path.join ( () function. Let’s rewrite the example from the previous paragraph using this function:
os.path.exists ( os.path.join ( (’sample_data’, ’README.md’))
The join() function of the os.path module correctly joins the given path to one or more *paths components. The return value is the concatenation of path and the *paths components, with exactly one os.sep directory separator following every non-empty part except the last. This means that the result will only end with a delimiter if the last part is empty.
If the component is an absolute path, all previous components are discarded and the connection continues from the absolute path component.
On Windows, the drive letter is not reset when an absolute path component is encountered, such as r’foo’. If a component contains a drive letter, all previous components are discarded and the drive letter is reset. Because each drive has a current directory, os.path.join(’c:’, ’foo’) represents a path relative to the current directory on drive C: - c:foo, not c:\foo.
The path and *paths arguments must be of the same type and can be either byte strings or text strings. The result will be the same type.
The os.path.join() function can take an object representing a file system path, such as pathlib.PurePath.
>>> import os.path >>> os.path.join(’home’, ’User’, ’Desktop’, ’file.txt’) # ’home/User/Desktop/file.txt’ >>> os.path.join(’/home’, ’User/Desktop’, ’file.txt’) # ’/home/User/Desktop/file.txt’ >>> os.path.join(’/home’, ’/User/Desktop’, ’file.txt’) # ’/User/Desktop/file.txt’ >>> os.path.join(’User/Desktop’, ’/home’, ’file.txt’) # ’/home/file.txt’

Python os.path.join on Windows
Windows has a concept of current directory for each drive. Because of that, "c:sourcedir"
means "sourcedir" inside the current C: directory, and you’ll need to specify an absolute directory.
Any of these should work and give the same result, but I don’t have a Windows VM fired up at the moment to double check:
"c:/sourcedir" os.path.join("/", "c:", "sourcedir") os.path.join("c:/", "sourcedir")
Python os.path.join () method __del__: Questions
How can I make a time delay in Python?
5 answers
I would like to know how to put a time delay in a Python script.
Answer #1
import time
time.sleep(5) # Delays for 5 seconds. You can also use a float value.
Here is another example where something is run approximately once a minute:
import time
while True:
print("This prints once a minute.")
time.sleep(60) # Delay for 1 minute (60 seconds).
Answer #2
You can use the sleep()
function in the time
module. It can take a float argument for sub-second resolution.
from time import sleep
sleep(0.1) # Time in seconds
Python os.path.join () method __del__: Questions
How to delete a file or folder in Python?
5 answers
How do I delete a file or folder in Python?
Answer #1
os.remove()
removes a file.os.rmdir()
removes an empty directory.shutil.rmtree()
deletes a directory and all its contents.
Path
objects from the Python 3.4+ pathlib
module also expose these instance methods:
pathlib.Path.unlink()
removes a file or symbolic link.pathlib.Path.rmdir()
removes an empty directory.
Answer #2
os.remove()
removes a file.os.rmdir()
removes an empty directory.shutil.rmtree()
deletes a directory and all its contents.
Path
objects from the Python 3.4+ pathlib
module also expose these instance methods:
pathlib.Path.unlink()
removes a file or symbolic link.pathlib.Path.rmdir()
removes an empty directory.
Answer #3
Python syntax to delete a file
import os
os.remove("/tmp/<file_name>.txt")
Or
import os
os.unlink("/tmp/<file_name>.txt")
Or
pathlib Library for Python version >= 3.4
file_to_rem = pathlib.Path("/tmp/<file_name>.txt")
file_to_rem.unlink()
Path.unlink(missing_ok=False)
Unlink method used to remove the file or the symbolik link.
If missing_ok is false (the default), FileNotFoundError is raised if the path does not exist.
If missing_ok is true, FileNotFoundError exceptions will be ignored (same behavior as the POSIX rm -f command).
Changed in version 3.8: The missing_ok parameter was added.
Best practice
- First, check whether the file or folder exists or not then only delete that file. This can be achieved in two ways :
a.os.path.isfile("/path/to/file")
b. Useexception handling.
EXAMPLE for os.path.isfile
#!/usr/bin/python
import os
myfile="/tmp/foo.txt"
## If file exists, delete it ##
if os.path.isfile(myfile):
os.remove(myfile)
else: ## Show an error ##
print("Error: %s file not found" % myfile)
Exception Handling
#!/usr/bin/python
import os
## Get input ##
myfile= raw_input("Enter file name to delete: ")
## Try to delete the file ##
try:
os.remove(myfile)
except OSError as e: ## if failed, report it back to the user ##
print ("Error: %s - %s." % (e.filename, e.strerror))
RESPECTIVE OUTPUT
Enter file name to delete : demo.txt Error: demo.txt - No such file or directory. Enter file name to delete : rrr.txt Error: rrr.txt - Operation not permitted. Enter file name to delete : foo.txt
Python syntax to delete a folder
shutil.rmtree()
Example for shutil.rmtree()
#!/usr/bin/python
import os
import sys
import shutil
# Get directory name
mydir= raw_input("Enter directory name: ")
## Try to remove tree; if failed show an error using try...except on screen
try:
shutil.rmtree(mydir)
except OSError as e:
print ("Error: %s - %s." % (e.filename, e.strerror))
Is there a simple way to delete a list element by value?
5 answers
I want to remove a value from a list if it exists in the list (which it may not).
a = [1, 2, 3, 4]
b = a.index(6)
del a[b]
print(a)
The above case (in which it does not exist) shows the following error:
Traceback (most recent call last):
File "D:zjm_codea.py", line 6, in <module>
b = a.index(6)
ValueError: list.index(x): x not in list
So I have to do this:
a = [1, 2, 3, 4]
try:
b = a.index(6)
del a[b]
except:
pass
print(a)
But is there not a simpler way to do this?
Answer #1
To remove an element"s first occurrence in a list, simply use list.remove
:
>>> a = ["a", "b", "c", "d"]
>>> a.remove("b")
>>> print(a)
["a", "c", "d"]
Mind that it does not remove all occurrences of your element. Use a list comprehension for that.
>>> a = [10, 20, 30, 40, 20, 30, 40, 20, 70, 20]
>>> a = [x for x in a if x != 20]
>>> print(a)
[10, 30, 40, 30, 40, 70]