python-3.x - 对目录中的所有文件运行命令
问题描述
请参阅下面的示例脚本。我需要在一个目录中的多个文本文件上运行它。我知道这是可能的,但我似乎无法正确使用语法。我相信我需要将以下内容作为一个进程运行?
with open("text.txt", "r") as infile:
for line in infile:
if re.search(r"\b1000\b", line, flags=re.IGNORECASE):
count1 += 1
这是我让它在多个文件上运行的失败尝试。
path = 'c:/mypath/'
for filename in os.listdir(path):
open(filename, "r")
for line in filename:
if re.search(r"\b1000\b", line, flags=re.IGNORECASE):
count1 += 1
print(count1)
解决方案
您尝试中的几个问题。
open
必须分配给文件句柄,你没有这样做filename
是文件名。您必须加入路径才能打开完整文件
例如像这样:
path = r'c:\mypath'
for filename in os.listdir(path):
with open(os.path.join(path,filename), "r") as infile:
for line in infile:
if re.search(r"\b1000\b", line, flags=re.IGNORECASE):
count1 += 1
或更好的内在理解和sum
for filename in os.listdir(path):
with open(os.path.join(path,filename), "r") as infile:
count1 += sum(1 for line in infile if re.search(r"\b1000\b", line, flags=re.IGNORECASE))
或变体(但有些人不喜欢它):
count1 += sum(bool(re.search(r"\b1000\b", line, flags=re.IGNORECASE)) for line in infile)
推荐阅读
- alsa - 在pulseaudio中禁用频率重采样
- javascript - 如何从新的 iframe 重置损坏的 JavaScript 数组对象?
- java - 我正在尝试在 Java 中创建菱形
- c# - 为什么 File.ReadAllLinesAsync() 会阻塞 UI 线程?
- r - 如何修改我的代码行以返回顺序数据?
- whatsapp - API / 代码以了解 WhatsApp 组中的参与者数量
- c# - Windows 窗体 - 检测外部应用程序关闭以触发事件
- java - InflateInputStream.Read() 在我的应用程序中导致 ANR。我正在尝试从应用程序中解压缩文本文件。此功能在 Intelij 中运行良好
- html - Importxml 功能(googlesheets)不适用于 Skillshare 网站?
- python - 在 python 3.8 中,从字典中获取值并转换为整数(如果存在)的最简洁方法是什么?