だから、私は、Python 3に連結された文字列を実行しようとしているPythonで)(EXECするとそれが働きました。この関数は最終的に、ループが現在の月までカウントする(while)ループに入ります。真の代替は
def all_installs_to_dataframe(month):
'''Imports csv's from different months to pandas dataframes'''
command = ["dataset = pd.read_csv('/path/file2017", "_overview.csv', sep=',', header=0, encoding='utf-16')"]
return (command[0] + month + command[1])
exec(all_installs_to_dataframe("05"))
exec()
は、(信頼できる入力を除く)好かれていないようにしかし、StackOverflowの上で私の広範な研究にそれはそうです。したがって、私はこれをより良くする方法を知りたいですか?私は多くの辞書が好きであることがわかって、私はこれを試してみましたが、それは私だけでなく、文字列与えるだろう:
dict = {'start': "dataset = pd.read_csv('/path/file2017", 'month': "05", 'end': "_overview.csv', sep=',', header=0, encoding='utf-16')"}
exec(dict['start']+dict['month']+dict['end'])
私は再びexec()
しなければなりません。 だから、どのように私はexec()
文を使用せずにこれを行うことができますか?
@nico:私は、最初は(日時ライブラリを持つ)すべての私のファイルの上にこのループを持っていた:
month_date = 3
while month_date - 1<date.today().month:
dataset = "dataset_%s" % (month_date)
function = "pd.read_csv('/path/file2017%s_overview.csv', sep=',', header=0, encoding='utf-16')" % (month_date)
dataset = function
month_date += 1
は、それから私は、私は文字列を取得し、それが動作しないことに気づきました。だから今はexec()
関数を使用しています。しかし、どこでも、私はそれを使用するべきではありません読んで、ので、どのように私はこのループでexec()
機能を回避するだろうか?
csvパスを直接送信するだけの理由はありますか。コマンドが多様なので、これはうまくいきませんか?私はあなたがしたいことをよりよく理解しようとしています。 – nico