Python 试图通过Kivy打开文件时出错

Python 试图通过Kivy打开文件时出错,python,kivy,ioerror,Python,Kivy,Ioerror,我正在编写一个应用程序,它可以打开一个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

我正在编写一个应用程序,它可以打开一个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加载它时选择“发送到:Kivy 1.7.0”时,我得到以下错误:

    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

您当前的工作目录中不存在文件
beer\u archive.csv
,该目录很可能是
C:\Users\Knute\Python\projects\Kivy\u Stuff\cillar
文件夹

如果没有完整路径,Python将在当前工作目录中查找,这取决于程序的启动方式以及是否调用了
os.chdir()
来更改当前工作目录

使用存档文件的完整路径:

with open(os.path.join(folder_path, 'beer_archive.csv'), 'rb', 1) as beer_csv:
其中
folder_path
设置为
beer_archive.csv
所在文件夹的完整路径

请注意,如果您只需将CSV中的行附加到
self.beer_列表
,就可以保存一个循环;以下操作将在一个命令中完成:

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))

您当前的工作目录中不存在文件
beer\u archive.csv
,它很可能是
C:\Users\Knute\Python\projects\Kivy\u Stuff\cillar
文件夹

如果没有完整路径,Python将在当前工作目录中查找,这取决于程序的启动方式以及是否调用了
os.chdir()
来更改当前工作目录

使用存档文件的完整路径:

with open(os.path.join(folder_path, 'beer_archive.csv'), 'rb', 1) as beer_csv:
其中
folder_path
设置为
beer_archive.csv
所在文件夹的完整路径

请注意,如果您只需将CSV中的行附加到
self.beer_列表
,就可以保存一个循环;以下操作将在一个命令中完成:

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))

谢谢你,Martijn,这似乎成功了!再次感谢你的循环保存技巧。谢谢你,Martijn,这似乎成功了!再次感谢您的循环保存提示。