迭代Excel文件并在Python中的一个文件夹中输出 [英] Iterate excel files and output in one folder in Python
本文介绍了迭代Excel文件并在Python中的一个文件夹中输出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个文件夹和子文件夹结构,如下所示:
I have a folder and subfolders structure as follows:
D:/src
├─ xyz.xlsx
├─ dist
│ ├─ xyz.xlsx
│ ├─ xxx.zip
│ └─ xxy.xlsx
├─ lib
│ ├─ xy.rar
│ └─ xyx.xlsx
├─ test
│ ├─ xyy.xlsx
│ ├─ x.xls
│ └─ xyz.xlsx
我想从源目录和子目录中提取所有excel文件(xls或xlsx),基于excel文件名删除重复项,并将所有唯一文件放在D:/dst目录中.我如何在Python中得到以下结果?谢谢. 预期结果:
I want to extract all excel files (xls or xlsx) from source directory and subdirectories, drop duplicates based on excel file names and put all the unique files in D:/dst directory. How can I the following result in Python? Thanks. Expected result:
D:/dst
├─ xyz.xlsx
├─ xxy.xlsx
├─ xyx.xlsx
├─ xyy.xlsx
├─ x.xls
这是我尝试过的:
import os
for root, dirs, files in os.walk(src, topdown=False):
for file in files:
if file.endswith('.xlsx') or file.endswith('.xls'):
#print(os.path.join(root, file))
try:
df0 = pd.read_excel(os.path.join(root, file))
#print(df0)
except:
continue
df1 = pd.DataFrame(columns = [columns_selected])
df1 = df1.append(df0, ignore_index = True)
print(df1)
df1.to_excel('test.xlsx', index = False)
推荐答案
我认为这可以满足您的要求:
I think this will do what you want:
import os
import shutil
src = os.path.abspath(r'.\_src')
dst = os.path.abspath(r'.\_dst')
wanted = {'.xls', '.xlsx'}
copied = set()
for root, dirs, filenames in os.walk(src, topdown=False):
for filename in filenames:
ext = os.path.splitext(filename)[1]
if ext in wanted and filename not in copied:
src_filepath = os.path.join(root, filename)
shutil.copy(src_filepath, dst)
copied.add(filename)
这篇关于迭代Excel文件并在Python中的一个文件夹中输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文