gpt4 book ai didi

python - 在linux下使用python通过终端统计文件夹中所有文件的行数

转载 作者:行者123 更新时间:2023-12-04 19:14:09 25 4
gpt4 key购买 nike

我正在使用带有 python 2.7 的 Ubuntu,

我需要获取一个文件夹中的所有文件,并分别计算每个文件中的行数并将其转储到一个文件中。

我发现如何通过终端直接使用并行处理 here

当我尝试时它崩溃了:

subprocess.Popen('ls %s* | parallel -k zcat {} | wc -l >%s'%(dir,outputfile), shell=True)

现在我正在尝试通过 python 使用该终端命令,
似乎它不能获取文件列表并将它们用作文件,而只能计算文件列表的长度。
p1 = subprocess.Popen(["ls", dest], stdout=subprocess.PIPE)
output = subprocess.check_output(["wc", "-l"], stdin=p1.stdout)

当我想要每个文件中有多少行的列表时,给我文件夹中的文件数。

如何使用 python 执行以下命令:
给我一个文件夹中每个文件有多少行的列表,并将使用并行(或任何其他好的多核方法)来完成

最佳答案

您可以使用标准库中的东西而无需掏出:

导入操作系统

from multiprocessing import Pool

folder = '.'

fnames = (name for name in os.listdir(folder)
if os.path.isfile(os.path.join(folder, name)))


def file_wc(fname):
with open(fname) as f:
count = sum(1 for line in f)
return count


pool = Pool()

print(pool.map(file_wc, list(fnames)))

如果要记录文件名
def file_wc(fname):
with open(fname) as f:
count = sum(1 for line in f)
return (fname, count)

print(dict(pool.map(file_wc, list(fnames))))

关于python - 在linux下使用python通过终端统计文件夹中所有文件的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44678682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com