Python办公自动化-获取文件夹下文件的几种方法

Python办公自动化-获取文件夹下文件的几种方法,第1张

在Python办公自动化的时候,经常会对本地文件进行一些 *** 作。

这里介绍几种方法,可以快速获取对应文件夹下的文件,返回一个列表。
然后就可以用列表的切片方式,把列表里的文件名取出来,再进行 *** 作。

方法1:
import os
import pandas as pd
path = r'D:\code\MyProject\百度OCR\IDcard\images'

def findAllFile(base):
    for root, dirs, files in os.walk(base):
        for f in files:
            yield base +'\'+ f
fa = findAllFile(path)
file_list = []
for i in range(len(os.listdir(path))):
    f = next(fa)
    file_list.append(f)
    #这里的file_list就是存放文件名的列表了。
# 简单的例子,把文件名存储到csv文件中
df = pd.DataFrame(file_list, columns=['file_name'])
df.to_csv('file_list.csv', index=False)

运行之后得到CSV文件,打开后如下:

方法2
import os
import pandas as pd
path = r'D:\code\MyProject\百度OCR\IDcard\images'

file_list_2 = []
for i in range(len(os.listdir(path))):
    file_list_2.append(os.path.join(path, os.listdir(path)[i]))
    #这里的file_list_2就是存放文件名的列表了。
# 简单的例子,把文件名存储到csv文件中
df = pd.DataFrame(file_list_2, columns=['file_name'])
df.to_csv('file_list2.csv', index=False)

运行之后得到CSV文件,打开后如下:

方法3
import os
import pandas as pd
path = r'D:\code\MyProject\百度OCR\IDcard\images'

file_name = os.listdir(path)
file_list_3 = []
for i in range(len(file_name)):
    f = path + '\' + file_name[i]
    file_list_3.append(f)
    #这里的file_list_3就是存放文件名的列表了。
# 简单的例子,把文件名存储到csv文件中
df = pd.DataFrame(file_list_3, columns=['file_name'])
df.to_csv('file_list3.csv', index=False)

作用跟上面的效果一样,不再截图

方法4
file_list_4 = []
for root, dirs, files in os.walk(path):
    for file in files:
        f = path +'\' + file
        file_list_4.append(f)

df = pd.DataFrame(file_list_4, columns=['file_name'])
df.to_csv('file_list4.csv', index=False)

作用跟上面的效果一样,不再截图

方法5
file_list_5 = []
for root, dirs, files in os.walk(path):
    for file in files:
        file_list_5.append(os.path.join(root, file))

df = pd.DataFrame(file_list_5, columns=['file_name'])
df.to_csv('file_list5.csv', index=False)

作用跟上面的效果一样,不再截图

其中:
1、是用了yield,然后把结果next()出来
2、主要用os.listdir()函数
3、和2原理一样,跟2的区别在于路径+文件名的拼装的方式不一样
4、是用了os.walk()函数
5、是用了os.walk()函数,跟4的区别在于路径+文件名的拼装的方式不一样

写法都比较简单,没什么推荐用法。以后有空可以试试测一下效率。

最后:

以上几种方法可以获取文件夹下面的文件,并把文件名称组成一个列表。
但是,如果images文件夹下还有文件夹,就会出问题。
也有办法去捕获异常或者做一些判断避免这些错误。但是会增加代码复杂度。为了代码的简洁易读,建议就用多个文件夹做物理上的分离:images文件夹只放文件,不要放目录。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/730636.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存