尝试通过Kivy打开文件获取IOError

时间:2013-07-07 23:19:37

标签: 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'), '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

1 个答案:

答案 0 :(得分: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:

其中folder_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))