Getting the Directory/Path details

K

Kali K E

Hi,
I could not understand how I can do the following things in Python.
Please help me.

1. First I have to find the current directory from where the script is
invoked.
2. Next I have to form a directory structure there. If the current
directory in step 1 is /home/mylogin, then from there I have to build
a directory structure like
/home/mylogin/result
/home/mylogin/tmp/
/home/mylogin/.....

There are three things as I look at it. First determing the current
directory path. Second adding a string to it like /result etc. Third
creating the new directory.
Thank you for the help.

Kali
 
P

Peter Otten

Kali said:
Hi,
I could not understand how I can do the following things in Python.
Please help me.

1. First I have to find the current directory from where the script is
invoked.
2. Next I have to form a directory structure there. If the current
directory in step 1 is /home/mylogin, then from there I have to build
a directory structure like
/home/mylogin/result
/home/mylogin/tmp/
/home/mylogin/.....

There are three things as I look at it. First determing the current
directory path. Second adding a string to it like /result etc. Third
creating the new directory.
Thank you for the help.

Kali

1 os.getcwd()
2 os.path.join()
3 os.mkdir() or os.makedirs()

<code>
import os

subfolders = [
"result",
"temp",
"something/else",
]

folder = os.getcwd()

for sf in subfolders:
os.makedirs(os.path.join(folder, sf))
</code>
 
K

Kali K E

Peter Otten said:
Kali said:
Hi,
I could not understand how I can do the following things in Python.
Please help me.

1. First I have to find the current directory from where the script is
invoked.
2. Next I have to form a directory structure there. If the current
directory in step 1 is /home/mylogin, then from there I have to build
a directory structure like
/home/mylogin/result
/home/mylogin/tmp/
/home/mylogin/.....

There are three things as I look at it. First determing the current
directory path. Second adding a string to it like /result etc. Third
creating the new directory.
Thank you for the help.

Kali

1 os.getcwd()
2 os.path.join()
3 os.mkdir() or os.makedirs()

<code>
import os

subfolders = [
"result",
"temp",
"something/else",
]

folder = os.getcwd()

for sf in subfolders:
os.makedirs(os.path.join(folder, sf))
</code>

Hi,

Thank you very much for the answer. It works fine when used first
time. But when the directory already exists I am getting the following
traceback message.
Traceback (most recent call last):
File "temp6.py", line 15, in ?
os.makedirs(os.path.join(folder, sf))
File "/usr/lib/python2.2/os.py", line 203, in makedirs
mkdir(name, mode)
OSError: [Errno 17] File exists:
'/hda1/home/kalike/chnages/python/result'

How do I take care in such a case?

Also can you please let me know where I can search for all these OS or
system calls. Is it available as a document some where?

Thanks,
Kali
 
P

Peter Otten

Kali said:
Thank you very much for the answer. It works fine when used first
time. But when the directory already exists I am getting the following
traceback message.
Traceback (most recent call last):
File "temp6.py", line 15, in ?
os.makedirs(os.path.join(folder, sf))
File "/usr/lib/python2.2/os.py", line 203, in makedirs
mkdir(name, mode)
OSError: [Errno 17] File exists:
'/hda1/home/kalike/chnages/python/result'

How do I take care in such a case?

I modified the code to accept already existing directories. The strategy is:
Try to create the directory
If creation fails, see if the directory already exists.
If yes move to the next directory, otherwise throw an exception.

class DirectoryException(Exception): pass

for sf in subfolders:
dirpath = os.path.join(folder, sf)
try:
os.makedirs(dirpath)
except OSError, e:
if e.errno == 17:
if not os.path.isdir(dirpath):
raise DirectoryException, "'%s' can neither be created nor
is it an existing directory" % dirpath
else:
raise # cannot handle it here

Also can you please let me know where I can search for all these OS or
system calls. Is it available as a document some where?

It seems you are not familiar with the concept of Exceptions. So, if you
were already exposed to another programming language, I'd suggest reading
the tutorial that comes with your distribution first, otherwise look out
for a textbook.

The relevant links on the python site are (in recommended reading order):

http://www.python.org/doc/current/tut/tut.html
http://www.python.org/doc/current/lib/module-os.path.html
http://www.python.org/doc/current/lib/module-os.html

Peter
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,164
Messages
2,570,898
Members
47,439
Latest member
shasuze

Latest Threads

Top