在多个文件上使用python脚本

在多个文件上使用python脚本,python,pandas,Python,Pandas,我有一个python(pandas)脚本,可以将csv文件读入数据帧,编辑它们,并将它们转换为新的csv(输出): 我想一次在多个csv文件上使用它,并获得多个输出(csv): 我试过: from tkinter.filedialog import askopenfilename filename = askopenfilename() df = pd.read_csv(filename, sep=',') ... 它可以工作(给我一个选择窗口),但我只能选择一个文件如果一个接一个地选择而

我有一个python(pandas)脚本,可以将csv文件读入数据帧,编辑它们,并将它们转换为新的csv(输出):

我想一次在多个csv文件上使用它,并获得多个输出(csv):

我试过:

from tkinter.filedialog import askopenfilename

filename = askopenfilename()

df = pd.read_csv(filename, sep=',')
...

它可以工作(给我一个选择窗口),但我只能选择一个文件

如果一个接一个地选择而不是一次选择所有文件就足够了,请查看模块:

1。在目标目录中创建文件列表

target_directory = r'Path/to/your/dir'
file_list = glob.glob(target_directory + "/*.csv") 
# Include slash or it will search in the wrong directory!
2。循环浏览列表中的文件并施展您的魔法

for file in file_list:                # Loop files
    df_result = your_function(file)   # Put your logic into a separate function
    new_filename = file.replace('.csv', '_processed.csv')
    df_result.to_csv(new_filename, index = False)

如果一个接一个而不是一次完成所有文件就足够了,请查看模块:

1。在目标目录中创建文件列表

target_directory = r'Path/to/your/dir'
file_list = glob.glob(target_directory + "/*.csv") 
# Include slash or it will search in the wrong directory!
2。循环浏览列表中的文件并施展您的魔法

for file in file_list:                # Loop files
    df_result = your_function(file)   # Put your logic into a separate function
    new_filename = file.replace('.csv', '_processed.csv')
    df_result.to_csv(new_filename, index = False)
在这段代码中,您说的是“askopenfilename”,即打开一个文件,当您应该打开多个文件时,您应该尝试下面的代码

import Tkinter,tkFileDialog
dir = Tkinter.Tk()
mul_file = tkFileDialog.askopenfilenames(parent=dir,title='Choose a 
                                                   multiple file')
“mul_file”将是元组。如有需要,将其更改为列表

mul_file=list(mul_file)
这将在列表中提供所有选定的文件。在循环中迭代列表并在其中执行csv操作

在这段代码中,您说的是“askopenfilename”,即打开一个文件,当您应该打开多个文件时,您应该尝试下面的代码

import Tkinter,tkFileDialog
dir = Tkinter.Tk()
mul_file = tkFileDialog.askopenfilenames(parent=dir,title='Choose a 
                                                   multiple file')
“mul_file”将是元组。如有需要,将其更改为列表

mul_file=list(mul_file)

这将在列表中提供所有选定的文件。循环迭代列表并在其中执行csv操作

这在大多数情况下都有效。它遍历文件并编辑它们,但最后一部分。to#csv返回:
AttributeError:'NoneType'对象没有属性'to#csv'
我使用:
对于文件列表中的文件:#循环文件df#结果=使用脚本(文件)#将逻辑放入单独的函数new#filename=file.replace('.csv',''u processed.csv')df_result.to_csv(new_filename,index=False)print(df_result.info())
结果是:
index:0个条目空DataFrameNone
所以你是对的,dataframe是空的。有什么方法可以解决这个问题吗?这意味着你需要使用_script()返回一个空数据框。请更新初始问题并包含完整的使用脚本(),以def开头,以return结尾。我想我知道发生了什么。我忘了在函数的末尾包含
return df4
。我已经包含了它,到目前为止它仍然有效。哇,谢谢!我觉得错过了它太愚蠢了。我很乐意帮助-快乐编码!这在很大程度上是有效的。它会遍历文件并编辑它们,但最后part.to_csv返回:
AttributeError:'NoneType'对象没有属性'to_csv'
我使用:
用于文件列表中的文件:#循环文件df_结果=使用脚本(文件)#将逻辑放入一个单独的函数new_filename=file.replace('.csv','_processed.csv')df_result.to_csv(new_filename,index=False)打印(df_result.info())
结果是:
索引:0个条目空DataFrameNone
所以你是对的,dataframe是空的。有什么办法可以解决这个问题吗?这意味着你的use_pandas_脚本()返回一个空的dataframe。请更新你的初始问题,并包括完整的use_pandas_脚本(),以def开头,以return结尾。我想我知道发生了什么。我忘了在函数的末尾包含
return df4
。我已经包含了它,并且到目前为止它仍然有效。哇,谢谢!我觉得错过了它太愚蠢了。我很乐意帮助您-快乐编码!