2017-09-21 3 views
1

私は、ユーザ定義の名前、例えばdata.csvでファイルに保存したいデータがいくつか作成されているPython 3 test.pyスクリプトを持っています。このスクリプトが置かれているフォルダには、/Resultsというフォルダがあります。私がしたいのは、現在のスクリプトの名前を持つResultsの中にサブフォルダを作成し、そこにファイルを保存することです。ですから、私のファイルは./Results/test/data.csvに保存されています。以前に存在しなかったフォルダが作成され、ファイルとともに存在する場合は、data.csvが置き換えられます。私はこれがどのOSでも動作するようにしたい。これは "パイソン的に"どのように行うべきですか?ファイルを現在のPythonスクリプトファイルの名前でフォルダに保存する方法は?

~/ 
    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

関連する問題