簡體   English   中英

根據條件從另一個文件夾內的文件夾中導入 csv 文件

[英]Import csv files based on condition from the folders that inside another folder

我想根據條件從另一個文件夾中的文件夾復制和粘貼 csv 文件。

主文件夾名為“main”,里面有文件夾,分別是main_1、main_2、main_3、......、main_45。 每個文件夾里面還有csv文件,分別是a1、b2、c3、d4、e5、........z30。

我只想從文件夾中復制 a1.csv、b2.csv 和 c3.csv 並將它們粘貼到另一個空文件夾中。 它對我來說看起來太復雜了,但我相信這對專家來說很容易。 提前致謝

os.walk遍歷目錄並以字符串形式顯示所有文件。

所以遍歷main文件夾,如果文件名以.csv結尾,然后用shutil.copyfile函數復制它

import os, shutil
for p, d, f in os.walk("main"):
    for fname in f:
        if fname.endswith(".csv"):
            shutil.copyfile(os.path.join(p, f), os.path.join("ANOTHER EMPTY FOLDER NAME", f))

文檔:

https://docs.python.org/3/library/os.html

https://docs.python.org/3/library/shutil.html

如果您想要某個文件夾和子文件夾下的所有 CSV 文件名,一個簡單的方法是使用 Python 的glob.glob()函數。 有了這個,您可以為 CSV 文件指定*.csv並使其遞歸到子文件夾:

import glob

for csv_filename in glob.glob(r'C:\main\**\*.csv', recursive=True):
    print(csv_filename)

例如,如果您只想復制以a1 a3c10開頭的 CSV 文件名,則正則表達式可能會有所幫助:

import glob
import os
import shutil
import re

re_abc123 = re.compile('[a-z]\d+')

for csv_filename in glob.glob(r'C:\main\**\*.csv', recursive=True):
    basename = os.path.basename(csv_filename)
    
    if re_abc123.match(basename):
        print(csv_filename)
        shutil.copyfile(csv_filename, os.path.join('output_folder', basename))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM