Python:收集所有xlsx。-打开-添加列-保存在新文件夹中

Python:收集所有xlsx。-打开-添加列-保存在新文件夹中,python,excel,Python,Excel,我是Python新手,但正在尝试编写一段代码,在多个.xlsx文件上添加一列,并使用原始名称将这些文件保存到一个新文件夹中 我从下面的一些编码开始,但在“打开所有文件”并保存到我的DestPath中缺少一些代码。如果有任何解决方案,我们将非常高兴: from os import listdir, path import pandas as pd import xlrd SourcePath = 'C:\' #Source Path DestPath = 'C:\' #Destination

我是Python新手,但正在尝试编写一段代码,在多个.xlsx文件上添加一列,并使用原始名称将这些文件保存到一个新文件夹中

我从下面的一些编码开始,但在“打开所有文件”并保存到我的
DestPath
中缺少一些代码。如果有任何解决方案,我们将非常高兴:

from os import listdir, path
import pandas as pd
import xlrd



SourcePath = 'C:\' #Source Path
DestPath = 'C:\' #Destination Path


# Listing up all .xlsx files from Source
def find_xlsx_filenames( path_to_dir, suffix=".xlsx" ):
    filenames = listdir(path_to_dir)
    return [ filename for filename in filenames if filename.endswith( suffix ) ]

filenames = find_xlsx_filenames(SourcePath)
fname = path.join(SourcePath, filenames[0]) # Tar første fil i mappa.

outname = path.join(outputdata, filenames[0])


for i in range(len(filenames)):
    fname = path.join(SourcePath, filenames[i])

df = pd.read_excel(fname) #Read Excel file as a DataFrame

df['new_col'] = 'Sort Data' #Adding a new column named <Sort Data>


#To save it back as Excel
df.to_excel(DestPath, outname) #Write DateFrame back as Excel file
从操作系统导入列表目录,路径
作为pd进口熊猫
导入xlrd
SourcePath='C:\'\源路径
DestPath='C:\'#目标路径
#列出源代码中的所有.xlsx文件
def find_xlsx_文件名(路径_到_dir,后缀=“.xlsx”):
filenames=listdir(路径到目录)
返回[如果filename.endswith(后缀),则返回filename中filename的filename]
filenames=find_xlsx_文件名(SourcePath)
fname=path.join(SourcePath,文件名[0])35; Tar første fil i mappa。
outname=path.join(outputdata,文件名[0])
对于范围内的i(len(文件名)):
fname=path.join(SourcePath,文件名[i])
df=pd.read_excel(fname)#将excel文件作为数据框读取
df['new_col']='Sort Data'#添加一个名为
#将其保存回Excel
df.to_excel(DestPath,outname)#将日期框写回excel文件
提前感谢

检查这是否有效

import os
import pandas as pd
path = 'C:/'

for roots, dirs, files in os.walk(path):
    xlsfile = [ _ for _ in files if _.endswith('.xlsx')]

for xlsf in xlsfile:
    df = pd.read_excel(os.path.join(roots, xlsf))
    df['Sort Data'] = ' '
    df.to_excel(os.path.join(roots, xlsf), index = False)

谢谢你的建议。代码运行(由于一个unicode错误,我不得不添加r。-r'C:/“代码似乎找不到或无法打开我的xlsx文件,因为代码运行后文件中没有任何更改。我可能需要指定添加“排序数据”的列吗?假设我已经有了包含a-H数据的字段,并且排序数据应该是“I”的标题。它在我的系统中可以工作m、 我希望您正在搜索的目录中有
.xlsx
文件。默认情况下,“排序数据”列将添加为最后一列。如果您可以在C目录中提供该文件的任何屏幕截图,那就太好了。如果您对代码做了任何其他更改,或者希望查看目录,请查找“屏幕”在我的原始帖子中。它应该是理想的工作方式。试着打印
xlsfile
,看看是否有excel文件。我相信excel文件的扩展名是
。xlsx
而不是
。xls
你是正确的,Rajat。像你可能已经做的那样创建了一些示例文件,它似乎工作正常。它确实在“a”中添加了一个空白列,移动了其余的1列在右侧添加“排序数据”作为最后一个。我的实际文件似乎有一些棘手的问题,可能与文件的权限有关。请参见屏幕2。