Python 如何在pandas中同时读取多个csv文件

Python 如何在pandas中同时读取多个csv文件,python,pandas,Python,Pandas,嗨,我正在尝试让用户选择三个文件,然后在用户选择并按下打开按钮后将它们读入程序。我尝试了以下代码,但收到以下错误消息。我想它打印出来的文件名一旦打开,这是工作时,我有代码打开一个单一的文件,但我想它的工作,以及多个文件只是不知道如果它可能或不可能 > Exception in Tkinter callback Traceback (most recent call last): > File "C:\Users\John\anaconda3\lib\tkinter\__

嗨,我正在尝试让用户选择三个文件,然后在用户选择并按下打开按钮后将它们读入程序。我尝试了以下代码,但收到以下错误消息。我想它打印出来的文件名一旦打开,这是工作时,我有代码打开一个单一的文件,但我想它的工作,以及多个文件只是不知道如果它可能或不可能

> Exception in Tkinter callback Traceback (most recent call last):  
> File "C:\Users\John\anaconda3\lib\tkinter\__init__.py", line 1883, in
> __call__
>     return self.func(*args)   File "<ipython-input-7-0367338b5787>", line 24, in file_opener
>     read_file = pd.read_csv (filename, "r","w",error_bad_lines=False, engine="python")   File
> "C:\Users\John\anaconda3\lib\site-packages\pandas\io\parsers.py", line
> 676, in parser_f
>     return _read(filepath_or_buffer, kwds)   File "C:\Users\John\anaconda3\lib\site-packages\pandas\io\parsers.py", line
> 430, in _read
>     fp_or_buf, _, compression, should_close = get_filepath_or_buffer(   File "C:\Users\John\anaconda3\lib\site-packages\pandas\io\common.py",
> line 200, in get_filepath_or_buffer
>     raise ValueError(msg) ValueError: Invalid file path or buffer object type: <class 'tuple'>
的文档非常薄,但是考虑到它允许您选择多个文件,所以很有可能返回的是某种类型的集合。果不其然,如果将
print(filename)
移到失败行上方,则会返回文件名的
tuple
。因此,通过循环这些名称来创建数据帧

import json
import numpy as np
import re
import matplotlib.pyplot as plt
import fileinput
import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox
from tkinter import Menu
import pandas as pd

root = tk.Tk()
root.title("Data Tools 101")
root.geometry("650x700")

def file_opener():
    global read_file

    filenames = filedialog.askopenfilenames(initialdir = "/", title = "Open files", multiple=True)
    dfs = []
    for filename in filenames:
        print("opening", filename)
        dfs.append(pd.read_csv (filename, error_bad_lines=False, engine="python"))
        print(dfs[-1])

menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label='Open File',command = file_opener)
filemenu.add_separator()
menubar.add_cascade(label='File', menu=filemenu)

你好。想想你的意思是“同时”还是“按顺序”。如果你想并行执行,你需要考虑使用类似的东西。或者,如果您只想背靠背读取多个csv文件,那么就需要从
filename
变量中创建一个for循环,我假设该变量返回一个迭代器,然后对每个文件执行
pd.read\u csv
pd.read\u csv(filename,“r”,“w”,error\u bad\u lines=False,engine=“python”)
将CSV分隔符从逗号更改为“w”。这是故意的吗?我想能够读写文件,这就是为什么我要写“r”,“w”。语法不正确吗?
import json
import numpy as np
import re
import matplotlib.pyplot as plt
import fileinput
import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox
from tkinter import Menu
import pandas as pd

root = tk.Tk()
root.title("Data Tools 101")
root.geometry("650x700")

def file_opener():
    global read_file

    filenames = filedialog.askopenfilenames(initialdir = "/", title = "Open files", multiple=True)
    dfs = []
    for filename in filenames:
        print("opening", filename)
        dfs.append(pd.read_csv (filename, error_bad_lines=False, engine="python"))
        print(dfs[-1])

menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label='Open File',command = file_opener)
filemenu.add_separator()
menubar.add_cascade(label='File', menu=filemenu)