Reputation: 26648
Actually need to go some path and execute some command and below is the code
code:
import os
present_working_directory = '/home/Desktop/folder'
presently i am in folder
if some_condition == true :
change_path = "nodes/hellofolder"
os.chdir(change_path)
print os.getcwd()
if another_condition == true:
change_another_path = "nodes"
os.chdir(change_another_path)
print os.getcwd()
**Result**:
'/home/Desktop/folder/nodes/hellofolder'
python: [Errno 1] No such file or directory
Actually whats happening here is when i first used os.chdir()
the directory has changed to
'/home/Desktop/folder/nodes/hellofolder'
,
but for the second one i need to run a file by moving to one folder back that is
'/home/Desktop/folder/nodes'
So can anyone let me how to move one folder back in python
Upvotes: 48
Views: 221020
Reputation: 1
import os
pathX = r'C:/Hello/HelloWorld'
print(os.path.dirname(pathX))
Upvotes: 0
Reputation: 99
The answers mentioned above are correct. The following is more of something that usually happens when your Python script is in a nested directory. You want to go one level up from the current working directory to maybe, let's say, load a file.
The idea is to simply reformat the path string and prefix it with a '../'. So an example would be.
'../current_directory/' + filename
This format is similar to when used in a terminal. Whenever in doubt fire up a terminal and experiment with some commands. The format is reflected in the programming language.
Upvotes: 1
Reputation: 1
Define this function in your script and call it whenever you want to go back just by one folder:
import os
def dirback():
m = os.getcwd()
n = m.rfind("\\")
d = m[0: n+1]
os.chdir(d)
return None
Upvotes: 0
Reputation: 372
My problem was fixed with this command
first import os
and after add
os.path.normpath(os.path.abspath(__file__) + os.sep + os.pardir)
Upvotes: 1
Reputation: 1985
os.chdir('../')
Folder1:
sub-folder1:(you want to navigate here)
Folder2:
sub-folde2:(you are here)
To navigate to sub-folder1
from sub-folder2
, you need to write like this
"../Folder1/sub-folder1/
"
then, put it in os.chdir("../Folder1/sub-folder1/")
.
Upvotes: 6
Reputation: 1821
Here is a very platform independent way to do it.
In [1]: os.getcwd()
Out[1]: '/Users/user/Dropbox/temp'
In [2]: os.path.normpath(os.getcwd() + os.sep + os.pardir)
Out[2]: '/Users/user/Dropbox/'
Then you have the path, and you can chdir or whatever with it.
Upvotes: 54
Reputation: 1124
think about using absolute paths
import os
pwd = '/home/Desktop/folder'
if some_condition == true :
path = os.path.join(pwd, "nodes/hellofolder")
os.chdir(path)
print os.getcwd()
if another_condition == true:
path = os.path.join(pwd, "nodes")
os.chdir(path)
print os.getcwd()
Upvotes: 2