我有一个大约100个文件的列表,我想阅读并匹配一个单词.这是我写的代码片段.
import re
y = 'C:\\prova.txt'
var1 = open(y, 'r')
for line in var1:
if re.match('(.*)version(.*)', line):
print line
var1.close()
Run Code Online (Sandbox Code Playgroud)
每次我尝试将元组传递给y时都会出现此错误:
TypeError: coercing to Unicode: need string or buffer, tuple found.
Run Code Online (Sandbox Code Playgroud)
(我认为这open()不接受任何元组但只接受字符串)
所以我可以让它使用文件列表?
先感谢您!!!!
你是完全正确的,open不接受元组并需要一个字符串.所以你必须逐个迭代文件名:
import re
for path in paths:
with open(path) as f:
for line in f:
if re.match('(.*)version(.*)', line):
print line
Run Code Online (Sandbox Code Playgroud)
在这里,我使用paths保存文件名作为变量 - 它可以是元组或列表或您可以迭代的其他对象.
用fileinput.input而不是open.
该模块实现了一个辅助类和函数,可以通过标准输入或文件列表快速编写循环
[...]要指定备用文件名列表,请将其作为input()的第一个参数传递.也允许使用单个文件名.
例:
import fileinput
for line in fileinput.input(list_of_files):
# etc...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7170 次 |
| 最近记录: |