Python: Refer a properties file from different location


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Python: Refer a properties file from different location
# 8  
Old 11-15-2019
For example:

Code:
from /path/to/config/test_properties.py import  *

That works fine right?
# 9  
Old 11-15-2019
Hi Neo...
No.
Direct absolute paths do not work from import, however there is a similar effect using execfile(...) as the OP is using Python 2.6.x...
(... exec(open(...).read()) for 3.x.x to the current 3.8.0...)
An example for a maths library I an developing Python 2.4.6 for the AMIGA which does not have the builtin...
Code:
Last login: Fri Nov 15 10:59:24 on ttys000
AMIGA:amiga~> python
Python 2.7.10 (default, Feb 22 2019, 21:55:15) 
[GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.37.14)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
>>> execfile("/Users/amiga/Desktop/maths.py")
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'cos', 'dft', 'dwt', 'e', 'exp', 'fp_power', 'pi', 'sin', 'sqrt', 'sys', 'tan', 'test', 'truncate']
>>> _

The OP will probably have to look at the builtin 'sys' and import that:
Code:
>>> import sys
>>> help(sys.path)

For more info on adding the path to the Python environment...
I no longer have version 2.6.x to test with...
This User Gave Thanks to wisecracker For This Post:
# 10  
Old 11-18-2019
Hi Neo, Wisecracker;

I have tried this. Full path is not working.

Code:
import os, sys
#from ../config/test_properties import *
#sys.path.append(os.path.dirname(os.path.realpath(__file__)) + "/path/to/config")  ## <----- This is NOT working
sys.path.append(os.path.dirname(os.path.realpath(__file__)) + "/./config")    ## <----- This is working
from test_properties import *
params=paramsOriginal
print(params)

So for actual implementation, I need do something like /../../config (Maybe!?).

Any suggestion is most welcome.

Cheers,
Sapta.
# 11  
Old 11-18-2019
Try the full path without this built-in prefix:

Code:
os.path.realpath(__file__)

Like this:

Code:
sys.path.append("", "/path/to/config")

Does something like that work?

Might be a good idea to print this, when debugging:

Code:
os.path.realpath(__file__)

This User Gave Thanks to Neo For This Post:
# 12  
Old 11-18-2019
Apologies for any typos...
There is no better use than a working example...
Longhand using OSX 10.14.6, default bash terminal:
Code:
Last login: Mon Nov 18 09:29:24 on ttys000
AMIGA:amiga~> # My maths library is on the Desktop
AMIGA:amiga~> # I am currently in my ${HOME}.
AMIGA:amiga~> 
AMIGA:amiga~> python
Python 2.7.10 (default, Feb 22 2019, 21:55:15) 
[GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.37.14)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path.append("/Users/amiga/Desktop/")
>>> # My maths library is in the above directory!
... 
>>> from maths import *
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'cos', 'dft', 'dwt', 'e', 'exp', 'fp_power', 'pi', 'sin', 'sqrt', 'sys', 'tan', 'test', 'truncate']
>>> exit()
AMIGA:amiga~> 
AMIGA:amiga~> # Back to the shell.
AMIGA:amiga~> _

Read my previous post again.
A similar effect of from module import * is execfile("/full/path/to/module[.py]") if you are not sure about how to add diretories to a Python PATH.
Also IF you are importing 'os' it already has 'sys' so there is no need to import 'sys'; this is true for all versions of Python as far back as 1.4.0:
Code:
AMIGA:amiga~> python3.8
Python 3.8.0rc1 (v3.8.0rc1:34214de6ab, Oct  1 2019, 12:56:49) 
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> import os
>>> 
>>> sys=os.sys
>>> 
>>> sys.path.append("/Users/amiga/Desktop/")
>>> 
>>> from maths import *
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'cos', 'dft', 'dwt', 'e', 'exp', 'fp_power', 'os', 'pi', 'sin', 'sqrt', 'sys', 'tan', 'test', 'truncate']
>>> _


Last edited by wisecracker; 11-18-2019 at 07:10 AM.. Reason: Added [.py] for clarity.
These 2 Users Gave Thanks to wisecracker For This Post:
# 13  
Old 11-18-2019
Hi Wisecracker,

Thank you, this is worked and I can live with this Smilie .
Code:
import os
sys=os.sys
sys.path.append("/path/to/config")
from test_properties import *
params=paramsOriginal
print(params)

This User Gave Thanks to saps19 For This Post:
# 14  
Old 11-18-2019
I don't think you need to use append, to be honest:

Code:
sys.path

Quote:
A list of strings that specifies the search path for modules. Initialized from the environment variable PYTHONPATH, plus an installation-dependent default.

As initialized upon program startup, the first item of this list, path[0], is the directory containing the script that was used to invoke the Python interpreter. If the script directory is not available (e.g. if the interpreter is invoked interactively or if the script is read from standard input), path[0] is the empty string, which directs Python to search modules in the current directory first. Notice that the script directory is inserted before the entries inserted as a result of PYTHONPATH.

A program is free to modify this list for its own purposes. Only strings and bytes should be added to sys.path; all other data types are ignored during import.
According, this may work (sorry, did not test it), if ("/path/to/config") is the full path:

Code:
sys.path("/path/to/config")

Try it and post back Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to find a existing file location and directory location in Solaris box?

Hi This is my third past and very impressed with previous post replies Hoping the same for below query How to find a existing file location and directory location in solaris box (1 Reply)
Discussion started by: buzzme
1 Replies

2. UNIX for Dummies Questions & Answers

[Solved] How to refer to input file in code?

This may be a dumb question, but googling is not giving me an answer. I'm trying to figure out how to refer to an input file in my code. Lets say i run a script in bash: "sh shellscript.sh inputfile" (Inputfile will be variable...whatever file i run the script on) I wanted to make... (5 Replies)
Discussion started by: legato22
5 Replies

3. UNIX for Dummies Questions & Answers

Hot to retrieve *.sql file names which we refer in .sh file.

Hi Guys, How to retrieve/get *.sql file names which we refer in all *.sh files. Can any one help me on this. Thanks, Kolipaka (3 Replies)
Discussion started by: lakshmanrk811
3 Replies

4. Shell Programming and Scripting

How to copy a file from one location to another location?

I have file file1.txt in location 'loc1'. Now i want a copy of this file in location 'loc2' with a new file called test.txt. Please help me how to do this in shell script. (1 Reply)
Discussion started by: vel4ever
1 Replies

5. Shell Programming and Scripting

File created in a different location instead of desired location on using crontab

Hi, I am logging to a linux server through a user "user1" in /home directory. There is a script in a directory in 'root' for which all permissions are available including the directory. This script when executed creates a file in the directory. When the script is added to crontab, on... (1 Reply)
Discussion started by: archana.n
1 Replies

6. Shell Programming and Scripting

reading in properties file

Hi Am new to this scripting stuff so bear with me. I got a script made now that reads in a properties file. The properties file is in the following format: 256= Bos, Sea, FRa 128= HEL I want to be able to read in each line of the file and split out the letter fields by the numbered field. This... (2 Replies)
Discussion started by: vsekvsek
2 Replies

7. Shell Programming and Scripting

Put one string from one location to another location in a file

Hi Everyone, I have 1.txt here a b c' funny"yes"; d e The finally output is: here a b c d e' funny"yes"; (1 Reply)
Discussion started by: jimmy_y
1 Replies

8. UNIX for Dummies Questions & Answers

Refer a remote file

I need to refer a remote(present on another unix server) directory from my unix machine as a local file. e.g. I have one directory D1 on 10.10.10.10 and i need to access files in this directory just like they are present on my unix machine 20.20.20.20. Is there any way out... i read a bit... (1 Reply)
Discussion started by: blackeyed
1 Replies

9. UNIX for Dummies Questions & Answers

File properties

Hi , I do have a line in my code as follows: if ] ; then ... else ... fi What does the -z does ? Similarly there is -s in some other part of the code. I guess there are many options like this.. Can anybody please tell what all options are available and what do they mean ? (2 Replies)
Discussion started by: risshanth
2 Replies

10. HP-UX

Depot file properties

Hi How can we identify the informations like Author, meta data, dependency and other information from a depot file? (1 Reply)
Discussion started by: sethumadhavan
1 Replies
Login or Register to Ask a Question