1

スクリプトの同じディレクトリにあるはずのファイルから入力を読み取るPythonスクリプトがあります。

with open('./input1.txt') as file:
    F = file.readlines()
Do_Stuff(F)

私は通常、他のディレクトリ(スクリプトと入力ファイルが存在するディレクトリではない)からスクリプトを実行するため、(現在の作業ディレクトリにないため)入力ファイルが見つからないというIOErrorが発生します。入力ファイルのフルパスを移植可能にしたいので、私は好みません。スクリプトファイルと入力ファイルの両方が同じディレクトリにある必要があります。

起動元のディレクトリではなく、ロケーションディレクトリを検索するようにスクリプトを指定する方法はありますか?

4

2 に答える 2

3

__file__多くの場合相対パスですが、スクリプトのパスです。使用する:

import os.path

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

ディレクトリへの絶対パスを作成し、次を使用os.path.join()してファイルを開きます。

with open(os.path.join(scriptdir, './input1.txt')) as openfile:
于 2013-03-18T10:36:00.447 に答える
0

setuptools/distribute がインストールされている場合。pkg_resources 関数を使用してファイルにアクセスできます。

import pkg_resources

data = pkg_resources.resource_string(__name__, 'input1.txt')
于 2013-03-18T12:47:15.300 に答える