Bucla prin toate fișierele CSV dintr-un dosar (Programare, Python)

Sam Creamer a intrebat.

Încerc să trec în buclă doar fișierele csv dintr-un dosar care conține multe tipuri de fișiere și multe dosare, vreau doar să listeze toate fișierele .csv din acest dosar.

Iată la ce mă refer:

import os, sys

path = "path/to/dir"
dirs = os.listdir(path)

for file in dirs:
    if file == '*.csv':
        print file

Știu că nu există o variabilă wildcard în python, dar există o modalitate de a face acest lucru?

3 răspunsuri
dm03514

Python oferă glob care ar trebui să facă acest lucru

>>> import glob
>>> glob.glob('/path/to/dir/*.csv')

Returnează o listă eventual goală de nume de căi care se potrivesc cu pathname, care trebuie să fie un șir de caractere care conține o specificație de cale. pathname poate fi fie absolut (cum ar fi /usr/src/Python-1.5/Makefile) sau relativ (cum ar fi ../../Tools//.gif) și poate conține caractere wildcards în stil shell. Legăturile simbolice întrerupte sunt incluse în rezultate (ca în shell).

Dan Hooper

Utilizați modulul glob: http://docs.python.org/2/library/glob.html

import glob
path = "path/to/dir/*.csv"
for fname in glob.glob(path):
    print(fname)

Feminist

Încercam să fac o buclă prin folderul care conține fișiere cvs și să tipăresc numărul și numele coloanelor. următorul cod mi-a funcționat

import pandas as pd
import glob
path = r"C:UsersgumnweOneDrive - BPDesktopPersonaleiLinkSkin ProjectSkin_Project_Data_2020*.csv"
for fname in glob.glob(path):
   df=pd.read_csv(fname)
   my_list=list(df.columns)
   print(len(my_list),my_list)

Tags: