2013-07-07 30 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,這似乎已經做到了!雙倍感謝您的循環節省提示。 –

相關問題