2017-03-19 3 views
2

pandas.read_csvは、単一のステートメントとして使用すると正しく動作します。しかし、ファイルが存在していても、ループ内で使用されている場合はFileNotFoundErrorとなります。pandas.read_csvは、ループ内でFileNotFoundエラーを返します。

for filename in os.listdir("./Datasets/pollution"): 
    print(filename) # To check which file is under processing 
    df = pd.read_csv(filename, sep=",").head(1) 

これらの行は次のエラーを示しています。

pollutionData184866.csv <----- The name of the file is printed properly. 
Traceback (most recent call last): 
    File "/home/parnab/PycharmProjects/FinalYearProject/locationExtractor.py", line 13, in <module> 
    df = pd.read_csv(i, sep=",").head(1) 
    File "/usr/lib/python3.6/site-packages/pandas/io/parsers.py", line 646, in parser_f 
    return _read(filepath_or_buffer, kwds) 
    File "/usr/lib/python3.6/site-packages/pandas/io/parsers.py", line 389, in _read 
    parser = TextFileReader(filepath_or_buffer, **kwds) 
    File "/usr/lib/python3.6/site-packages/pandas/io/parsers.py", line 730, in __init__ 
    self._make_engine(self.engine) 
    File "/usr/lib/python3.6/site-packages/pandas/io/parsers.py", line 923, in _make_engine 
    self._engine = CParserWrapper(self.f, **self.options) 
    File "/usr/lib/python3.6/site-packages/pandas/io/parsers.py", line 1390, in __init__ 
    self._reader = _parser.TextReader(src, **kwds) 
    File "pandas/parser.pyx", line 373, in pandas.parser.TextReader.__cinit__ (pandas/parser.c:4184) 
    File "pandas/parser.pyx", line 667, in pandas.parser.TextReader._setup_parser_source (pandas/parser.c:8449) 
FileNotFoundError: File b'pollutionData184866.csv' does not exist 

しかし、私はそれが正常に動作している

filename = 'pollutionData184866.csv' 
df = pd.read_csv(filename, sep=',') 

をしています。

私は間違っていますか?

+0

あなたは 'glob.glob( './データセット/汚染/ * csvファイル。')'の代わりに 'os.listdir(」./データセット/汚染しようとしたらどうなりますか:パス

デモ与えられました")'? – MaxU

+0

@マックスそれは働いています...だから、最初の問題は何ですか? –

答えて

2

os.listdir("./Datasets/pollution")は、パスなしでファイルのリストを返し、glob.glob()を含む満足のファイル/ディレクトリのリストを返すためのパスに応じて"./Datasets/pollution"あなたは、そうglob.glob('./Datasets/pollution/*.csv')にそれを変更すると動作するはずです、カレントディレクトリ"."からCSVファイルNOTを解析しています

In [19]: os.listdir('d:/temp/.data/629509') 
Out[19]: 
['AAON_data.csv', 
'AAON_data.png', 
'AAPL_data.csv', 
'AAPL_data.png', 
'AAP_data.csv', 
'AAP_data.png'] 

In [20]: glob.glob('d:/temp/.data/629509/*.csv') 
Out[20]: 
['d:/temp/.data/629509\\AAON_data.csv', 
'd:/temp/.data/629509\\AAPL_data.csv', 
'd:/temp/.data/629509\\AAP_data.csv'] 
+0

ありがとう。 :-)私はターミナルから単一のコマンドを実行していた、それは同じディレクトリにあった、それが働いていた理由です。 –

関連する問題