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; ,则可以为自己节省一个循环。以下将在一个命令中执行此操作:

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 回答