[英]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))
文檔:
如果您想要某個文件夾和子文件夾下的所有 CSV 文件名,一個簡單的方法是使用 Python 的glob.glob()
函數。 有了這個,您可以為 CSV 文件指定*.csv
並使其遞歸到子文件夾:
import glob
for csv_filename in glob.glob(r'C:\main\**\*.csv', recursive=True):
print(csv_filename)
例如,如果您只想復制以a1
a3
或c10
開頭的 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.