2017-08-06 65 views
1

我想要遍歷一個目錄樹,並且對於在遍歷中遇到的每個csv我想打開該文件並將列0和15讀入數據。掃描一個目錄樹並將.csv文件讀入一個數據框(Python)

rootdir = r'C:/Users/stacey/Documents/Alco/auditopt/' 
for dirName,sundirList, fileList in os.walk(rootdir): 
     print('Found directory: %s' % dirName) 
     for fname in fileList: 
      print('\t%s' % fname) 
      df = pd.read_csv(fname, header=1, usecols=[0,15],parse_dates=[0], dayfirst=True,index_col=[0], names=['date', 'total_pnl_per_pos']) 
      print(df) 

,但我得到的錯誤消息:

FileNotFoundError: File b'auditopt.os-pnl.BBG_XASX_ARB_S-BBG_XTKS_7240_S.csv' does not exist. 

我-frame(之後我會處理,並移動到下一個文件,我可以使用下面的目錄樹內我試圖讀取存在的文件,它們是MS Excel格式的.csv格式,所以我不知道這是否是一個問題 - if有人可以讓我知道我是如何將MS Excel .csv讀入數據框的。否則,任何幫助將不勝感激。

完整的堆棧跟蹤如下:

Found directory: C:/Users/stacey/Documents/Alco/auditopt/ 
Found directory: C:/Users/stacey/Documents/Alco/auditopt/roll_597_oe_2017-03-10 
     tradeopt.os-pnl.BBG_XASX_ARB_S-BBG_XTKS_7240_S.csv 
Traceback (most recent call last): 

    File "<ipython-input-24-3753e367432d>", line 1, in <module> 
    runfile('C:/Users/stacey/Documents/scripts/Pair_Results_Code_1.0.py', wdir='C:/Users/stacey/Documents/scripts') 

    File "C:\Anaconda\lib\site-packages\spyder\utils\site\sitecustomize.py", line 866, in runfile 
    execfile(filename, namespace) 

    File "C:\Anaconda\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile 
    exec(compile(f.read(), filename, 'exec'), namespace) 

    File "C:/Users/stacey/Documents/scripts/Pair_Results_Code_1.0.py", line 49, in <module> 
    main() 

    File "C:/Users/stacey/Documents/scripts/Pair_Results_Code_1.0.py", line 36, in main 
    df = pd.read_csv(fname, header=1, usecols=[0,15],parse_dates=[0], dayfirst=True,index_col=[0], names=['date', 'total_pnl_per_pos']) 

    File "C:\Anaconda\lib\site-packages\pandas\io\parsers.py", line 646, in parser_f 
    return _read(filepath_or_buffer, kwds) 

    File "C:\Anaconda\lib\site-packages\pandas\io\parsers.py", line 389, in _read 
    parser = TextFileReader(filepath_or_buffer, **kwds) 

    File "C:\Anaconda\lib\site-packages\pandas\io\parsers.py", line 730, in __init__ 
    self._make_engine(self.engine) 

    File "C:\Anaconda\lib\site-packages\pandas\io\parsers.py", line 923, in _make_engine 
    self._engine = CParserWrapper(self.f, **self.options) 

    File "C:\Anaconda\lib\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'tradeopt.os-pnl.BBG_XASX_ARB_S-BBG_XTKS_7240_S.csv' does not exist 

非常感謝

回答

1

當文件的閱讀,您需要提供完整路徑。默認情況下,os.walk不提供完整路徑。你需要自己提供。

使用os.path.join可以很容易。

import os 
full_path = os.path.join(dirName, file) 
df = pd.read_csv(full_path, ...) 
相關問題