所以,我一直在尝试在Python 3中执行连接字符串并且它有效。此函数最终将进入(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"))
然而,在我对Stackoverflow的广泛研究中,似乎不喜欢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()
函数呢?
答案 0 :(得分:1)
为什么不在函数中执行命令并使用str.format
而不是exec
来编写文件名?
def all_installs_to_dataframe(month):
'''Imports csv's from different months to pandas dataframes'''
dataset = pd.read_csv('/path/file2017{}_overview.csv'.format(month), sep=',', header=0, encoding='utf-16')