pandas.read_csv 在循环中给出 FileNotFound 错误
pandas.read_csv gives FileNotFound error inside a loop
pandas.read_csv
在用作单个语句时可以正常工作。但是即使文件存在,它在循环内使用时也会给出 FileNotFoundError
。
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=',')
它工作正常。
我做错了什么?
os.listdir("./Datasets/pollution")
returns 没有路径的文件列表,根据路径 "./Datasets/pollution"
您正在解析不是来自当前目录 "."
的 CSV 文件,因此更改glob.glob('./Datasets/pollution/*.csv')
应该可以工作,因为 glob.glob()
returns 满足 files/directories 的列表,包括给定路径
演示:
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']
pandas.read_csv
在用作单个语句时可以正常工作。但是即使文件存在,它在循环内使用时也会给出 FileNotFoundError
。
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=',')
它工作正常。
我做错了什么?
os.listdir("./Datasets/pollution")
returns 没有路径的文件列表,根据路径 "./Datasets/pollution"
您正在解析不是来自当前目录 "."
的 CSV 文件,因此更改glob.glob('./Datasets/pollution/*.csv')
应该可以工作,因为 glob.glob()
returns 满足 files/directories 的列表,包括给定路径
演示:
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']