2013-07-07 37 views
1

我正在编写一个应用程序,它可以打开一个csv文件并使用Kivy布置数据。 csv文件与main.py存储在同一个文件夹中。获取IOError尝试通过Kivy打开文件

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) 

我可以在使用闲置打开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

文件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)) 
+0

谢谢Martijn,这似乎已经做到了!双倍感谢您的循环节省提示。 –

相关问题