Default path for files

R

Rotwang

Hi all, can anybody tell me whether there's a way to change the default
location for files to be opened by open()? I'd like to be able to create
files somewhere other than my Python folder without having to write the
full path in the filename every time. Sorry if this is a stupid
question, I don't know much about programming.
 
K

Krister Svanlund

Hi all, can anybody tell me whether there's a way to change the default
location for files to be opened by open()? I'd like to be able to create
files somewhere other than my Python folder without having to write the full
path in the filename every time. Sorry if this is a stupid question, I don't
know much about programming.

Check out http://docs.python.org/library/os.html and the function
chdir it is what you are looking for.
 
R

Rotwang

Christian said:
First of all you shouldn't alter the site module ever! The optional
sitecustomize module exists to make global changes.

A library must never change the current working directory. It's up to
the application to choose the right working directory. If you mess with
the working directory in a library or global module like site you *will*
break applications. Python has multiple ways to modify the list of
importable locations, either globally, for the current user or the
current application. Use them wisely!

Christian

OK, thanks.
 
G

Günther Dietrich

Rotwang said:
Thank you. So would adding

import os
os.chdir(<path>)

to site.py (or any other module which is automatically imported during
initialisation) change the default location to <path> every time I used
Python?

Don't change the library modules. It would catch you anytime when you
expect it least.

See for the environment variable PYTHONSTARTUP and the associated
startup file.



Best regards,

Günther
 
G

Gabriel Genellina

En Sun, 24 Jan 2010 15:04:48 -0300, Günther Dietrich
Don't change the library modules. It would catch you anytime when you
expect it least.

See for the environment variable PYTHONSTARTUP and the associated
startup file.

sitecustomize.py would be a better place. PYTHONSTARTUP is only used when
running in interactive mode.
Anyway, I'd do that explicitely on each script that requires it; after
upgrading the Python version, or moving to another PC, those scripts would
start failing...
 
N

Nobody

Hi all, can anybody tell me whether there's a way to change the default
location for files to be opened by open()? I'd like to be able to create
files somewhere other than my Python folder without having to write the
full path in the filename every time. Sorry if this is a stupid question,
I don't know much about programming.

If you pass a relative pathname to open() (or any other function which
expects a filename), it will be interpreted relative to the current
directory.

Given that the current directory always seems to be the Python directory,
and you refer to it as a "folder", I'm guessing that you're running Python
on Windows via a shortcut in the Start Menu or on the desktop.

In which case, the ideal solution is probably to open the Properties
dialog for the shortcut and change the "Start in" field to your
"My Documents" directory (or some subdirectory of it).

Python itself won't care which directory it starts in.
 
A

Aahz

Hi all, can anybody tell me whether there's a way to change the default
location for files to be opened by open()? I'd like to be able to create
files somewhere other than my Python folder without having to write the
full path in the filename every time. Sorry if this is a stupid
question, I don't know much about programming.

from os.path import join
BASE = '/path/to/root'
f = open(join(BASE, filename))

Trust me, you'll be much happier with this.
 

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
473,772
Messages
2,569,593
Members
45,111
Latest member
VetaMcRae
Top