Python 读取多个csv文件时出现未知语法错误
我正在尝试使用以下代码从多个子文件夹中读取一组csv文件:Python 读取多个csv文件时出现未知语法错误,python,pandas,csv,format,exec,Python,Pandas,Csv,Format,Exec,我正在尝试使用以下代码从多个子文件夹中读取一组csv文件: for csv in glob.glob('./data/*/*.csv', recursive=True): # all csv files in ./data vname = 'data_' + csv.split('/')[3].split('.')[0].lower() # variable names created from lowercased filenames print(csv, '-->',
for csv in glob.glob('./data/*/*.csv', recursive=True): # all csv files in ./data
vname = 'data_' + csv.split('/')[3].split('.')[0].lower() # variable names created from lowercased filenames
print(csv, '-->', vname) # test print csv-path and variable (for debugging)
exec("{0} = {1}".format(vname, pd.read_csv(csv, encoding='latin1'))) # initialize data from csvs to varaible names
我曾尝试在单独的行中读取csv,并使用tmp变量作为格式
的参数,但没有成功。
读取csv文件本身起作用,并分配一个整数exec(“{0}={1}”。format(vname,2))
也起作用。我无法理解为什么我总是得到以下语法错误:
Traceback (most recent call last):
File "/home/seb/.anaconda3/lib/python3.7/site-packages/IPython/core/interactiveshell.py", line 3326, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-173-4c89ac367e67>", line 4, in <module>
exec("{0} = {1}".format(vname, pd.read_csv(csv, encoding='latin1'))) # initialize data from csvs to varaible names
File "<string>", line 1
data_sharks_rays_chimaeras = id_no binomial presence origin seasonal \
^
SyntaxError: invalid syntax
回溯(最近一次呼叫最后一次):
文件“/home/seb/.anaconda3/lib/python3.7/site packages/IPython/core/interactiveshell.py”,第3326行,运行代码
exec(代码对象、self.user\u全局、self.user\n)
文件“”,第4行,在
exec(“{0}={1}”.format(vname,pd.read_csv(csv,encoding='latin1'))#将csv中的数据初始化为可变名称
文件“”,第1行
数据\u鲨鱼\u鳐鱼\u嵌合体=id\u无二项分布来源季节性\
^
SyntaxError:无效语法
问题在于,您试图将pd.read\u csv
的结果用作字符串格式参数。这行不通
你可以试试:
exec(“{0}=pd.read_csv({1},encoding='latin1'))”。格式(vname,csv)
但是,不建议对此类任务使用exec
(有关一些线索,请参阅)。你可以用字典来代替:
data={}
对于glob.glob('./data/*/*.csv',recursive=True)中的csv:
vname='data_u'+csv.split('/')[3]。split('.')[0]。lower()
数据[vname]=pd.read\u csv(csv,encoding='latin1'))