繁体   English   中英

如何只打开以字符串结尾的目录?

[英]How to open only the directories ending with string?

我有一个目录Data ,在里面,我还有很多其他目录,其模式为'customer_id2344`,在这种情况下,目录之间的数字会更改。 在这些目录中还有其他目录,在这些目录文件中。

数据/ customer_id“某个号码” /价格/文件

我列出了重要的客户数量(定义为变量),该数量称为points

points = [17835 34049 34050 34051 34052 34053 34054 34055 34056 34057 4058 34059  34060 17872 17873 17874 17875 17876 17877 17878 17879 17880 17882 17883  17884 17885 17886 17887 17888 17889 17890 17891 17892 19530 19531 21366]

我只想从重要的客户那里获得数据。 我尝试过这样的事情:

path = "/home/marlon/.../"

df = pd.DataFrame()

for dirpath, subfld, files in os.walk(path):
    for i in pontos:
        if dirpath.endswith(str(i)):
            subfld = path + dirpath
            if os.path.isdir(subfld):
                aux = pd.DataFrame()
                sn = subfld.split('_id')[1]
                for arch in os.listdir(subfld):
                        subsubfld = subfld + "/" + arch 
                        for file in os.listdir(subsubfld):
                            filepath = os.path.join(subsubfld, file)
                            if os.path.isfile(filepath):
                                new_col = pd.read_parquet(filepath)
                                aux = pd.concat([aux, new_col])
                aux['id_cliente'] = sn
                df = df.append(aux)
     print(df)

但是, endswith()方法不仅仅获得以变量points的数字结尾的文件夹,还给了我一个布尔值。 我没有获取数据,而是得到了一个空的DataFrame:

Empty DataFrame
Columns: []
Index: []

我可以使用什么方法?

谢谢

endswith只会检查以某些字符结尾的字符串。 但是,如果您只需要列出以整数结尾的目录,则可以使用glob

import glob
import os
for value in glob.glob('dir/*[0-9]'):
    if os.path.isdir(value):
        #do something with the directory

我认为这可能会有所帮助。

for fld, i in zip(os.listdir(path), pontos):
    if(fld.endswith(i))
        subfld = path + fld
        if os.path.isdir(subfld):
            aux = pd.DataFrame()
                ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM