如何在python中找到扩展名为.csv的目录中的所有文件?
答案 0 :(得分:52)
import os
import glob
path = 'c:\\'
extension = 'csv'
os.chdir(path)
result = glob.glob('*.{}'.format(extension))
print(result)
答案 1 :(得分:29)
from os import listdir
def find_csv_filenames( path_to_dir, suffix=".csv" ):
filenames = listdir(path_to_dir)
return [ filename for filename in filenames if filename.endswith( suffix ) ]
函数find_csv_filenames()
返回一个文件名列表作为字符串,它们位于具有给定后缀的目录path_to_dir
中(默认为“.csv”)。
附录
如何打印文件名:
filenames = find_csv_filenames("my/directory")
for name in filenames:
print name
答案 2 :(得分:5)
使用Python OS模块在目录中查找csv文件。
这里有一个简单的例子:
import os
# This is the path where you want to search
path = r'd:'
# this is the extension you want to detect
extension = '.csv'
for root, dirs_list, files_list in os.walk(path):
for file_name in files_list:
if os.path.splitext(file_name)[-1] == extension:
file_name_path = os.path.join(root, file_name)
print file_name
print file_name_path # This is the full path of the filter file
答案 3 :(得分:4)
我必须获取子目录中的csv
个文件,因此,使用tchlpr的响应我修改它以最适合我的用例:
import os
import glob
os.chdir( '/path/to/main/dir' )
result = glob.glob( '*/**.csv' )
print( result )
答案 4 :(得分:3)
通过结合使用过滤器和lambda,您可以轻松过滤出给定文件夹中的csv文件。
import os
files = os.listdir("/path-to-dir")
files = list(filter(lambda f: f.endswith('.csv'), files))
# lambda returns True if filename name ends with .csv or else False
# and filter function uses the returned boolean value to filter .csv files from list files.
答案 5 :(得分:2)
您可以仅将glob.glob与递归= true一起使用,模式**将匹配任何文件以及零个或多个目录,子目录以及指向目录的符号链接。
import glob, os
os.chdir("C:\\Users\\username\\Desktop\\MAIN_DIRECTORY")
for file in glob.glob("*/.csv", recursive = true):
print(file)
答案 6 :(得分:1)
import os
path = 'C:/Users/Shashank/Desktop/'
os.chdir(path)
for p,n,f in os.walk(os.getcwd()):
for a in f:
a = str(a)
if a.endswith('.csv'):
print(a)
print(p)
这将有助于识别这些csv文件的路径
答案 7 :(得分:1)
此解决方案使用python函数过滤器。此函数创建一个元素列表,该函数为其返回true。在这种情况下,使用的匿名函数是对通过os.listdir('我要查看的路径')
获得的目录文件列表的每个元素进行部分匹配'.csv'。import os
filepath= 'filepath_to_my_CSVs' # for example: './my_data/'
list(filter(lambda x: '.csv' in x, os.listdir('filepath_to_my_CSVs')))
答案 8 :(得分:0)
尽管thclpr提供的解决方案有效,但它仅扫描目录中的即时文件,而不扫描子目录中的文件(如果有)。虽然这不是必需条件,但以防万一有人也希望扫描子目录的情况是使用os.walk
的代码import os
from glob import glob
PATH = "/home/someuser/projects/someproject"
EXT = "*.csv"
all_csv_files = [file
for path, subdir, files in os.walk(PATH)
for file in glob(os.path.join(path, EXT))]
print(all_csv_files)
从this博客复制。
答案 9 :(得分:0)
请使用经过测试的工作代码。此函数将返回所有CSV文件的列表,并在您指定的路径中包含绝对CSV文件路径。
import os
from glob import glob
def get_csv_files(dir_path, ext):
os.chdir(dir_path)
return list(map(lambda x: os.path.join(dir_path, x), glob(f'*.{ext}')))
print(get_csv_files("E:\\input\\dir\\path", "csv"))
答案 10 :(得分:0)
使用python glob模块轻松列出我们所需的文件。
import glob
path_csv=glob.glob("../data/subfolrder/*.csv")
答案 11 :(得分:0)
许多(链接的)答案使用 os.chdir()
更改工作目录。但你不必这样做。
递归打印 /home/project/
目录中的所有 CSV 文件:
pathname = "/home/project/**/*.csv"
for file in glob.iglob(pathname, recursive=True):
print(file)
需要 python 3.5+。来自文档 [1]:
pathname
可以是绝对的(如 /usr/src/Python-1.5/Makefile
)或相对的(like ../../Tools/*/*.gif
)pathname
可以包含 shell 样式的通配符。recursive
为真,则模式 **
将匹配任何文件以及零个或多个目录、子目录和指向目录的符号链接答案 12 :(得分:0)
您可以将 glob
与 recursive = True
一起使用,模式 **
将匹配任何文件以及零个或多个目录、子目录和指向目录的符号链接。
import glob, os
os.chdir("C:\\Users\\username\\Desktop\\MAIN_DIRECTORY")
for file in glob.glob("*/*.csv", recursive = True):
print(file)