2017-09-21 4 views
1

사용자 정의 이름 (예 : data.csv)으로 파일에 저장하려는 일부 데이터가 생성되는 Python 3 test.py 스크립트가 있습니다. 이 스크립트가있는 폴더에 /Results 폴더가 있습니다. 내가하고 싶은 일은 Results 안에 현재 스크립트의 이름으로 하위 폴더를 만들고 그 안에 내 파일을 저장하는 것입니다. 그래서, 내 파일은 ./Results/test/data.csv에 저장됩니다. 이전에 존재하지 않는 폴더를 만들려면이 폴더를 만들고 싶으면 파일과 함께 존재하는 경우 data.csv을 바꿔야합니다. 나는 이것이 어떤 OS에서도 작동하기를 원한다. 이것이 "비단식적으로"어떻게해야합니까?현재 파이썬 스크립트 파일의 이름으로 파일을 폴더에 저장하는 방법은 무엇입니까?

~/ 
    test.py 
    Results/ 
    test/ 
     data.csv 

는 여기에 내가 원하는 위치 data.csv이 저장되지 않는 테스트 코드입니다. 어떻게 편집해야합니까?

import pandas as pd 

filename = "data.csv" 
df = pd.DataFrame([1,2,3]) 
df.to_csv(filename) 

답변

0

모듈은 os.path 모듈을 사용하여 일련의 폴더 검사를 수행하고 폴더가 없으면 만들 수 있습니다. 그리고 __file__ 특성을 사용하여 현재 파일 이름에 액세스 할 수 있습니다.

import os.path 
import pandas as pd 

file_name = os.path.splitext(os.path.basename(os.path.realpath(__file__)))[0] 

full_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "Results") 

if not os.path.exists(full_path): 
    os.mkdir(full_path) 

    if not os.path.exists(os.path.join(full_path, file_name)): 
     os.mkdir(os.path.join(full_path, file_name)) 

file_location = os.path.join(full_path, file_name, 'data.csv') 

df = pd.DataFrame([1, 2, 3]) 
df.to_csv(file_location) 
0

내가 사용합니다 :

import platform 
import os 

if platform.system().lower() == 'windows': 
    print("%s" % os.path.expandvars("%USERPROFILE%")) 
elif platform.system().lower() == 'posix': 
    print("%s" % os.path.expandvars("$PATH")) #or some other posix var like USER... 
else: 
    print("What the heck type of os is this?!?") 

나는 this 또한 당신을 위해 유용 할 수 있습니다 생각합니다.

+0

나는 작동하지 않습니다. 내 질문에 추가 된 코드를 확인하고 완료된 방법을 보여줄 수 있습니까? – Bella

+0

죄송합니다. 학교 컴퓨터에서 사용하고 있으므로 테스트 할 수 없었습니다. 나는 지금 그것을 시험 할 것이다. – chevydog

관련 문제