从 python 中的多个文件进行 cat 和 grep 并将输出写入文件?
cat and grep from multiple files in python and write output to a file?
我想要一个 python 相当于 shell 命令 cat logs/archived/app.2020-12-11* | grep "Sending" > sms_otp_logs_ack.log
我试过使用 sh 模块。
sh.grep(sh.cat(2020-12-18/100.6.13.16/app.*), string_to_grep)
由于 * 通配符,这会引发没有此类文件的错误。我怎样才能 pypass 这个并将输出保存到另一个文件?
你可以使用glob
模块,它根据Unixshell使用的规则找到所有匹配指定模式的路径名,然后将找到的文件以读取模式打开搜索所需的字符串 ("Sending"
),以便将包含该字符串的行附加到另一个文件。
import glob, os
for f in glob.glob(os.path.join(path, "app.2020-12-11*")):
with open(f, 'r') as f_in, open('sms_otp_logs_ack.log', 'a') as f_out:
for line in f_in:
if "Sending" in line:
f_out.write(line)
我想要一个 python 相当于 shell 命令 cat logs/archived/app.2020-12-11* | grep "Sending" > sms_otp_logs_ack.log
我试过使用 sh 模块。
sh.grep(sh.cat(2020-12-18/100.6.13.16/app.*), string_to_grep)
由于 * 通配符,这会引发没有此类文件的错误。我怎样才能 pypass 这个并将输出保存到另一个文件?
你可以使用glob
模块,它根据Unixshell使用的规则找到所有匹配指定模式的路径名,然后将找到的文件以读取模式打开搜索所需的字符串 ("Sending"
),以便将包含该字符串的行附加到另一个文件。
import glob, os
for f in glob.glob(os.path.join(path, "app.2020-12-11*")):
with open(f, 'r') as f_in, open('sms_otp_logs_ack.log', 'a') as f_out:
for line in f_in:
if "Sending" in line:
f_out.write(line)