2014-11-06 5 views
0

내가 수행 한 후 1.sec, 2.sec, 3.sec .............. &과 같은 폴더의 파일을 읽으려고합니다. 일부 변환, 나는 그것을 1.csv, 2.csv, 3.csv ............. 별도로 작성해야합니다. 내 코드 중 하나를 생성합니다 CSV 또는 filenamr에 오류를 던지고 . 제발이 솔루션을 제안하십시오.파이썬을 사용하여 폴더의 여러 파일에 쓰기

코드 :

import glob 
import os,io,sys 
import zipfile,gzip 
import StringIO,string 
import numpy as np 
import csv as csv 
import pandas as pd 
import random 
import decimal 
from pandas import Series, DataFrame 
from datetime import datetime 
import natsort 
from natsort import natsorted 
path = 'C://test//08October2014//DATA_INTV_NEW//Oct0814//*.sec.gz' 
files=glob.glob(path) 
for file in natsorted(files): 
    #print list 

    f = gzip.open(file, 'rb') 
    a=f.read() 
    def stripped(x): 
    return "".join([i for i in x if 31 < ord(i) < 127]) 
    b = stripped(a) 

    if 'OPT' in b: 
     c=string.split(b, 'OPT') 

    #Stripped Opt symbol is added again 
     for line in c: 
      if line[0:2]!='FUT': 
       line='OPT'+line 
       d=line 

      #Split lines into lines wrt Futures 
      if 'FUT' in d: 
       e=string.split(d,'FUT') 

       #Stripped fut symbol is added again 
       for line1 in e: 
        if line1[0:2]!='OPT': 
         line1='FUT'+line1 

       #Separating the fields using Comma 
      i=0 

      #Conversion to list 

      g=[line] 
      for g[i] in g: 
       if (i==5 or i==16 or i==28 or i==39 or i==42 or i==44 or i==55 or i==68 or i==79 or i==92 or i==103 or i==116 or i==127 or i==139 or i==150 or i==161 or i==172 or i==183 or i==194 or i==205 or i==216 or i==228): 
        g.insert(i+1,",") 

       i+=1 
       #Conversion back to string 

      h="".join(g) 
      #print h 



      #Writing into .txt or .csv file 
      fn=open("C://test//08October2014//DATA_INTV_NEW//Oct0814//*.csv","wb") 
      fn.write(h + '\n') 
      fn.close 

출력 :

IOError         Traceback (most recent call last) 
<ipython-input-3-9d5be8384154> in <module>() 
    81 
    82    #Writing into .txt or .csv file 
---> 83    fn=open("C://test//08October2014//DATA_INTV_NEW//Oct0814//*.csv","wb") 
    84    fn.write(h + '\n') 
    85    fn.close 

IOError: [Errno 22] invalid mode ('wb') or filename: 'C://test//08October2014//DATA_INTV_NEW//Oct0814//*.csv' 
+1

당신을 미행하는 파이썬에 내장 될 때 –

+0

내 눈 "import csv as csv" –

답변

1

import os 

num, ext = os.path.basename(file).split(".", 1) 

output_filename = os.path.join(os.path.dirname(file), "%s.csv" % (num,)) 

참고 변수 이름으로 file을 사용하지 않는 입력 파일 이름에서 번호를 사용, 출력 파일 이름을 얻으려면 `* .csv`라는 이름의 파일에 쓰기를 시도하고 있습니다. 이것은 유효한 이름이 아닙니다. 폴더에있는 모든 파일에 대해 윈도우 검색이 아닌 어떤 동작을하는 연산자는 없습니다. * 함수를 사용해야합니다 그에 대한.

0

내가 확신 당신이 * .CSV 최고 디렉토리에서 모든 파일을 열 수 없습니다. 이 같은

사용 무언가 :

import os.path 

fileslist=[] 
    for root, dirs, files in os.walk(directorypath): 
    for i in files: 
      fileslist.append(os.path.join(root, i)) 

다음 당신은 당신이 필요로하는 모든 파일과 함께 fileslist을해야합니다. 이것은 당신이

관련 문제