2014-04-14 2 views
0

여기에서이 주제에 관한 정보를 찾을 수 없으므로 정말로 감사드립니다! 나는 파이썬을 처음 접했지만 여기에 내가 갖고있는 것이있다.새 폴더에 여러 csv 파일을 작성해야합니다.

폴더에 여러 개의 파일이 있고이를 읽고 변환 한 다음 새 폴더에 다시 쓰려고합니다. 나는 모든 일을 처리 할 수 ​​있다고 생각하지만 모든 것을 다시 쓰는 방법을 알아낼 수는 없습니다. 여기

내 코드입니다 :

path = 'C:\Users\Christopher\Documents\Clemson\Pleurodires\stability data\Es03\fixed\processed' 
filenames = glob.glob(path + "/*.csv") 
for filename in filenames: 
    dfs = (pd.read_csv(filename)) 
    df = dfs.transpose() 
    df.to_csv('transposed\' + 'Tr_' + filename) 

'전치'라는 폴더에있는 모든 새 파일을 넣어야 마지막 줄에 (내가) 희망, 처음에로드 된 이름 앞에 Tr_를 추가 ​​(즉, 파일 이름이 'hello'인 경우에는 전치 된 폴더의 'Tr_hello'가됩니다.

위 코드를 실행할 때 무슨 일이 벌어 지는지는 정상적으로 작동하지만 파일이 내 컴퓨터의 어느 곳에도 존재하지 않는다는 것입니다. 내가 일하기 df.to_csv를 얻기 위해 다양한 방법으로 장난 시도하고 이것이 내가

편집 모든 사람의 도움을

감사를 가까이서 보는, 나는 결국 Nanashi의 및 EdChun의 코드의 혼합을 결합하는 것은 어떤 작품 내용 : (최종 파일이 올바른 폴더에 있으며, Tr_filename라고합니다)

path = r'C:\Users\Christopher\Documents\Clemson\Pleurodires\stability data\Es03\fixed\processed' 
filenames = glob.glob(path + "/*.csv") 
for filename in filenames: 
    short = os.path.split(filename) 
    newfilename = 'Tr_%s' % short[-1] 
    #print newfilename 
    dfs = (pd.read_csv(filename)) 
    df = dfs.transpose() 
    df.to_csv(os.path.join('transposed', newfilename)) 
+1

무엇이 문제입니까? 오류가 있습니까? 아니면 잘못된 위치에 파일을 쓰고 있습니까? 아니면 전혀 쓰지 않습니까? – CoryKramer

+0

안녕 사이버, 도와 줘서 고마워, 난 오류가 발생하지 않지만 파일이 전혀 쓰고 있지 않습니다 (적어도 내 컴퓨터 어디서나 그들을 찾을 수 없습니다). –

+0

'to_csv' 호출을'df.to_csv (path + '\ transposed \'+ 'Tr_'+ filename)과 같이 변경하려고 시도 했습니까? – CoryKramer

답변

1

몇 가지 :

  1. filenames = glob.glob(path + "/*.csv") - 내가 틀렸다하지 않는 한, 즉 백 슬래시가 아닌 슬래시해야한다. 슬래시는 유닉스 시스템 등에서 주로 사용되지만, 경로 이름이 관련된 Windows에서는 사용되지 않습니다.

  2. filename을 인쇄 해보십시오. 그것은 당신에게 전체 경로를 줄 것입니다. df.to_csv 행에서 실제로는 path + filename + transposed + Tr + filename에게 편지를 보내고 있습니다. 특정 파일 이름을 분리해야합니다 (split 또는 os 모듈이 작동 할 수 있음).

저는 우분투를 사용하고 있습니다. 그렇기 때문에 우분투를 정확하게 사용하지는 못 하겠지만, 어떻게해야할까요?

import pandas as pd 
from glob import glob 

path = "/home/nanashi/Documents/Python 2.7/Scrapers/Scrapy/itbooks" 
filenames = glob(path + "/*.csv") 

for filename in filenames: 
    specname = filename.split("/")[-1] 
    print filename 
    print specname 
    dfs = pd.read_csv(filename) 
    df = dfs.transpose() 
    df.to_csv("transposed/%s" % specname) 

결과 : 전치 파일의

/home/nanashi/Documents/Python 2.7/Scrapers/Scrapy/itbooks/realestateau.csv 
realestateau.csv 
/home/nanashi/Documents/Python 2.7/Scrapers/Scrapy/itbooks/itbooks.csv 
itbooks.csv 
[Finished in 0.6s] 

스크린 샷 :

enter image description here

이 도움이되는지 알려 주시기 바랍니다.

+0

안녕하세요. 당신의 도움에 감사드립니다. 내가 제안한대로 해봤지만 오류가 발생하지 않았고 파일도 얻지 못했습니다. 아마 그것은 내가 당신을 위해 완벽하게 작동하는 것처럼 보이는 것처럼 창을 사용하고 있기 때문입니다! 파일 이름을 출력하는 것은 내가 옮겨 놓고 싶은 모든 파일들을 보여줍니다. –

+0

백 슬래시가 아무 것도 벗어나고 있는지 확인하십시오. 또한 게시물을 수정하고 업데이트 된 코드를 추가해도 괜찮습니까? :) – Manhattan

+0

끝났습니다! 모든 도움에 감사드립니다. 정말로 감사드립니다! –

0

귀하의 코드는 다음과 같은 여러 오류가 시도 할 것 같다 :

,
import os 
path = r'C:\Users\Christopher\Documents\Clemson\Pleurodires\stability data\Es03\fixed\processed' 
filenames = glob.glob(path + "/*.csv") 
for filename in filenames: 
    dfs = (pd.read_csv(filename)) 
    df = dfs.transpose() 
    df.to_csv(os.path.join(r'transposed\Tr_', filename)) 
+0

EdChum, 고맙습니다. 그것은 성공적으로 내 파일을 조 변경하지만 새로운 파일은 작성하지 않습니다. –

관련 문제