所以,我一直試圖在Python 3中執行一個連接字符串,它工作。這個函數最終會進入(while)循環,在循環中循環計數到當前月份。python中的exec()的真正替代方法
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"))
然而,在我的#2廣泛的研究好像不喜歡(除了值得信賴的輸入)exec()
。因此,我想知道如何更好地做到這一點?我發現,很多人都喜歡字典,我想這和它會給我一個字符串,以及:
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