How do i open a python path?

Suppose my python code is executed a directory called main and the application needs to access main/2091/data.txt.

how should I use open(location)? what should the parameter location be?

I found that below simple code will work.. does it have any disadvantages?

file = "\2091\sample.txt"
path = os.getcwd()+file
fp = open(path, 'r+');

How do i open a python path?

Neuron

4,5854 gold badges32 silver badges53 bronze badges

asked Aug 23, 2011 at 18:24

4

With this type of thing you need to be careful what your actual working directory is. For example, you may not run the script from the directory the file is in. In this case, you can't just use a relative path by itself.

If you are sure the file you want is in a subdirectory beneath where the script is actually located, you can use __file__ to help you out here. __file__ is the full path to where the script you are running is located.

So you can fiddle with something like this:

import os
script_dir = os.path.dirname(__file__) #<-- absolute dir the script is in
rel_path = "2091/data.txt"
abs_file_path = os.path.join(script_dir, rel_path)

answered Aug 23, 2011 at 18:59

RussRuss

10.3k12 gold badges41 silver badges55 bronze badges

6

This code works fine:

import os

def read_file(file_name):
    file_handle = open(file_name)
    print file_handle.read()
    file_handle.close()

file_dir = os.path.dirname(os.path.realpath('__file__'))
print file_dir

#For accessing the file in the same folder
file_name = "same.txt"
read_file(file_name)

#For accessing the file in a folder contained in the current folder
file_name = os.path.join(file_dir, 'Folder1.1/same.txt')
read_file(file_name)

#For accessing the file in the parent folder of the current folder
file_name = os.path.join(file_dir, '../same.txt')
read_file(file_name)

#For accessing the file inside a sibling folder.
file_name = os.path.join(file_dir, '../Folder2/same.txt')
file_name = os.path.abspath(os.path.realpath(file_name))
print file_name
read_file(file_name)

How do i open a python path?

Neuron

4,5854 gold badges32 silver badges53 bronze badges

answered Oct 6, 2015 at 15:06

4

I created an account just so I could clarify a discrepancy I think I found in Russ's original response.

For reference, his original answer was:

import os
script_dir = os.path.dirname(__file__)
rel_path = "2091/data.txt"
abs_file_path = os.path.join(script_dir, rel_path)

This is a great answer because it is trying to dynamically creates an absolute system path to the desired file.

Cory Mawhorter noticed that __file__ is a relative path (it is as well on my system) and suggested using os.path.abspath(__file__). os.path.abspath, however, returns the absolute path of your current script (i.e. /path/to/dir/foobar.py)

To use this method (and how I eventually got it working) you have to remove the script name from the end of the path:

import os
script_path = os.path.abspath(__file__) # i.e. /path/to/dir/foobar.py
script_dir = os.path.split(script_path)[0] #i.e. /path/to/dir/
rel_path = "2091/data.txt"
abs_file_path = os.path.join(script_dir, rel_path)

The resulting abs_file_path (in this example) becomes: /path/to/dir/2091/data.txt

Ferguzz

5,4875 gold badges31 silver badges41 bronze badges

answered Sep 1, 2014 at 20:54

2

It depends on what operating system you're using. If you want a solution that is compatible with both Windows and *nix something like:

from os import path

file_path = path.relpath("2091/data.txt")
with open(file_path) as f:
    

should work fine.

The path module is able to format a path for whatever operating system it's running on. Also, python handles relative paths just fine, so long as you have correct permissions.

Edit:

As mentioned by kindall in the comments, python can convert between unix-style and windows-style paths anyway, so even simpler code will work:

with open("2091/data/txt") as f:
    

That being said, the path module still has some useful functions.

answered Aug 23, 2011 at 18:30

WilduckWilduck

13.5k10 gold badges57 silver badges89 bronze badges

5

I spend a lot time to discover why my code could not find my file running Python 3 on the Windows system. So I added . before / and everything worked fine:

import os

script_dir = os.path.dirname(__file__)
file_path = os.path.join(script_dir, './output03.txt')
print(file_path)
fptr = open(file_path, 'w')

answered Sep 1, 2018 at 22:14

How do i open a python path?

Ângelo PolottoÂngelo Polotto

6,8652 gold badges31 silver badges35 bronze badges

4

Try this:

from pathlib import Path

data_folder = Path("/relative/path")
file_to_open = data_folder / "file.pdf"

f = open(file_to_open)

print(f.read())

Python 3.4 introduced a new standard library for dealing with files and paths called pathlib. It works for me!

answered Aug 3, 2018 at 10:57

dcamposdcampos

1291 silver badge6 bronze badges

1

Code:

import os
script_path = os.path.abspath(__file__) 
path_list = script_path.split(os.sep)
script_directory = path_list[0:len(path_list)-1]
rel_path = "main/2091/data.txt"
path = "/".join(script_directory) + "/" + rel_path

Explanation:

Import library:

import os

Use __file__ to attain the current script's path:

script_path = os.path.abspath(__file__)

Separates the script path into multiple items:

path_list = script_path.split(os.sep)

Remove the last item in the list (the actual script file):

script_directory = path_list[0:len(path_list)-1]

Add the relative file's path:

rel_path = "main/2091/data.txt

Join the list items, and addition the relative path's file:

path = "/".join(script_directory) + "/" + rel_path

Now you are set to do whatever you want with the file, such as, for example:

file = open(path)

Mr_and_Mrs_D

30.3k37 gold badges173 silver badges349 bronze badges

answered Dec 22, 2018 at 22:09

Patriots299Patriots299

3553 silver badges14 bronze badges

1

import os
def file_path(relative_path):
    dir = os.path.dirname(os.path.abspath(__file__))
    split_path = relative_path.split("/")
    new_path = os.path.join(dir, *split_path)
    return new_path

with open(file_path("2091/data.txt"), "w") as f:
    f.write("Powerful you have become.")

answered Dec 8, 2019 at 15:02

How do i open a python path?

WebucatorWebucator

2,11722 silver badges32 bronze badges

If the file is in your parent folder, eg. follower.txt, you can simply use open('../follower.txt', 'r').read()

answered Dec 30, 2017 at 15:04

How do i open a python path?

Olivia LiaoOlivia Liao

3653 silver badges7 bronze badges

0

Python just passes the filename you give it to the operating system, which opens it. If your operating system supports relative paths like main/2091/data.txt (hint: it does), then that will work fine.

You may find that the easiest way to answer a question like this is to try it and see what happens.

answered Aug 23, 2011 at 18:31

kindallkindall

172k34 gold badges268 silver badges300 bronze badges

3

Not sure if this work everywhere.

I'm using ipython in ubuntu.

If you want to read file in current folder's sub-directory:

/current-folder/sub-directory/data.csv

your script is in current-folder simply try this:

import pandas as pd
path = './sub-directory/data.csv'
pd.read_csv(path)

answered Aug 21, 2014 at 2:20

SurviSurvi

334 bronze badges

Get the path of the parent folder, then os.join your relative files to the end.

# get parent folder with `os.path`
import os.path

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

# now use BASE_DIR to get a file relative to the current script
os.path.join(BASE_DIR, "config.yaml")

The same thing with pathlib:

# get parent folder with `pathlib`'s Path
from pathlib import Path

BASE_DIR = Path(__file__).absolute().parent

# now use BASE_DIR to get a file relative to the current script
BASE_DIR / "config.yaml"

answered Jun 12, 2021 at 11:07

James WongJames Wong

371 silver badge5 bronze badges

2

When I was a beginner I found these descriptions a bit intimidating. As at first I would try For Windows

f= open('C:\Users\chidu\Desktop\Skipper New\Special_Note.txt','w+')
print(f) 

and this would raise an syntax error. I used get confused alot. Then after some surfing across google. found why the error occurred. Writing this for beginners

It's because for path to be read in Unicode you simple add a \ when starting file path

f= open('C:\\Users\chidu\Desktop\Skipper New\Special_Note.txt','w+')
print(f)

And now it works just add \ before starting the directory.

answered Jun 24, 2020 at 19:18

How do i open a python path?

1

In Python 3.4 (PEP 428) the pathlib was introduced, allowing you to work with files in an object oriented fashion:

from pathlib import Path

working_directory = Path(os.getcwd())
path = working_directory / "2091" / "sample.txt"
with path.open('r+') as fp:
    # do magic

The with keyword will also ensure that your resources get closed properly, even if you get something goes wrong (like an unhandled Exception, sigint or similar)

answered Dec 13, 2021 at 20:14

How do i open a python path?

NeuronNeuron

4,5854 gold badges32 silver badges53 bronze badges

How do I open a file path?

To view the full path of an individual file:.
Click the Start button and then click Computer, click to open the location of the desired file, hold down the Shift key and right-click the file..
On the menu, there are two options to choose from that will allow you to either copy or view the entire file path:.

How do I run a path in Python Windows?

PATH variable.
Right-clicking This PC and going to Properties..
Clicking on the Advanced system settings in the menu on the left..
Clicking on the Environment Variables button o​n the bottom right..
In the System variables section, selecting the Path variable and clicking on Edit..