从包含 txt 文件的文件夹中只获取你想要的 txt 文件 - Python

Get only the txt file you want from the folder containing the txt file - Python

我有一个包含 .txt 个文件的文件夹。文件的名称是:

my_file1.txt
my_file2.txt
my_file3.txt
my_file4.txt

这样就只有最后一个数字不一样了

import pickle

my_list = []
with open("/Users/users_a/Desktop/website-basic/sub_domain/sub_domain01.txt", "rb") as f1, 
open("/Users/users_a/Desktop/website-ba\
sic/sub_domain/sub_domain02.txt", "rb") as f2, open("/Users/users_a/Desktop/website- 
basic/sub_domain/sub_domain03.txt", "rb") as f3:
    my_list.append(pickle.load(f1))
    my_list.append(pickle.load(f2))
    my_list.append(pickle.load(f3))

print(my_list)

这样,我加载了一个文件并将其放入my_list变量中,以创建一个列表并工作。随着要工作的文件数量的增加,代码变得太长和繁琐。

是否有一种更简单、更 pythonic 的方法来仅加载所需的 txt 文件??

您可以使用 os.listdir():

import os
import pickle

my_list = []
path = "/Users/users_a/Desktop/website-basic/sub_domain"

for file in os.listdir(path):
    if file.endswith(".txt"):
        with open(f"{path}/{file}","r") as f:
            my_list.append(pickle.load(f))

其中 filepath

中文件的文件名

I suggest using os.path.join() instead of hard coding the file paths


如果您的文件夹只包含您要加载的文件,您可以使用:

for file in os.listdir(path):
    with open(f"{path}/{file}","r") as f:
        my_list.append(pickle.load(f))

my_file[number].txt

编辑

如果您只想要 my_file[number].txt 格式的文件,请使用:

import os
import re
import pickle

my_list = []
path = "/Users/users_a/Desktop/website-basic/sub_domain"

for file in os.listdir(path):
    if re.match(r"my_file\d+.txt", file):
        with open(f"{path}/{file}","r") as f:
            my_list.append(pickle.load(f))

Online regex demo https://regex101.com/r/XJb2DF/1