0

How to remove path related problems in python?

For e.g. I have a module test.py inside a directory TEST

**test.py**
import os
file_path = os.getcwd() + '/../abc.txt'

f = open(file_path)
lines = f.readlines()
f.close

print lines

Now, when I execute the above program outside TEST directory, it gives me error:-

Traceback (most recent call last):
  File "TEST/test.py", line 4, in ?
    f = open(file_path)
IOError: [Errno 2] No such file or directory: 'abc.txt'

how to resolve this kind of problem. Basically this is just a small example that I have given up.

I am dealing with a huge problem of this kind.

I am using existing packages, which needs to be run only from that directory where it exists, how to resolve such kind of problems, so that I can run the program from anywhere I want.

Or able to deal with the above example either running inside TEST directory or outside TEST directory.

Any help.?

4

2 に答える 2

3

I think the easiest thing is to change the current working directory to the one of the script file:

import os
os.chdir(os.path.dirname(__file__))

This may cause problems, however, if the script is also working with files in the original working directory.

于 2012-06-03T10:31:16.253 に答える
0

コードは現在の作業ディレクトリを調べており、必要なファイルを見つけるための基礎としてそれを使用しています。あなたが今見つけているように、これはほとんど決して良い考えではありません.

Emil Vikström による回答で言及されている解決策はクイックフィックス ソリューションですが、より正しい解決策は、現在の作業ディレクトリを開始点として使用しないことです。

他の回答で述べたよう__file__に、インタープリターでは使用できませんが、コードの優れたソリューションです。

2 行目を次のように書き換えます。

file_path = os.path.join(os.path.dirname(__file__), "..", "abc.txt")

これは、現在のファイルがあるディレクトリを取得し、最初に で結合し..、次に で結合してabc.txt、必要なパスを作成します。

os.getcwd()同じ方法で、コード内の他の場所の同様の使用法を修正する必要があります。

于 2012-06-03T13:32:41.713 に答える