1

私はcsvファイルを開いてKivyでデータをレイアウトするアプリを書いています。csv ファイルは、main.py と同じフォルダーに格納されます。

class BeerCellar(ScrollView):
    def __init__(self, **kwargs):
        super(BeerCellar, self).__init__(**kwargs)
        self.beer_list = []
        with open(os.path.join('beer_archive.csv'), 'rb', 1) as beer_csv:
            beer_reader = csv.DictReader(beer_csv)
            for beer in beer_reader:
                beer_list.append(beer)

IDLE を使用して csv ファイルを開くことができますが、main.py を右クリックして [送信先: Kivy 1.7.0] を選択すると、Kivy がロードしているため、次のエラーが表示されます。

    File "C:\Users\Knute\Python\projects\Kivy_Stuff\Cellar\main.py", line 34, in
__init__
    with open(os.path.join('beer_archive.csv'), 'rb', 1) as beer_csv:
IOError: [Errno 2] No such file or directory: 'beer_archive.csv'

ファイルのアクセス許可は、すべて読み取り/書き込みに設定されています。
Windows 7、Python 2.7 を使用

4

1 に答える 1

1

ファイルは、現在の作業ディレクトリ (フォルダーである可能性が最も高い) に存在しbeer_archive.csvません。C:\Users\Knute\Python\projects\Kivy_Stuff\Cellar

フル パスがない場合、Python は現在の作業ディレクトリを調べます。それが何であるかは、プログラムの開始方法とos.chdir()、現在の作業ディレクトリを変更するために が呼び出されたかどうかによって異なります。

アーカイブ ファイルへのフル パスを使用します。

with open(os.path.join(folder_path, 'beer_archive.csv'), 'rb', 1) as beer_csv:

wherefolder_pathは、あるフォルダのフル パスに設定されますbeer_archive.csv

CSV から行を に追加するだけであれば、ループを節約できることに注意してくださいself.beer_list。以下は、1 つのコマンドでそれを行います。

class BeerCellar(ScrollView):
    def __init__(self, **kwargs):
        super(BeerCellar, self).__init__(**kwargs)
        with open(os.path.join(folder_path, 'beer_archive.csv'), 'rb', 1) as beer_csv:
            self.beer_list = list(csv.DictReader(beer_csv))
于 2013-07-07T23:23:07.013 に答える