将f.write文件保存到与askopenfilename相同的目录

2 投票
1 回答
1114 浏览
提问于 2025-04-18 02:22

我正在用Python运行一个脚本,目的是在一个文件中找到某一行。askopenfilename这个函数会弹出一个对话框,让我选择想要搜索的文件,而f.write则是把结果保存到一个文件里。我想知道怎么才能让这个保存的文件自动保存在我找到原始文件的同一个地方?

from tkFileDialog import askopenfilename

filename = askopenfilename()

file = open(filename, "r")
for line in file:
    if "INF: Camera timeout" in line:
        with open("../timeouts.txt", "a") as f:
            f.write(line)
            f.close

另外,askopenfilename这个对话框总是打开在其他窗口的后面,我该怎么让它在最上面打开呢?

1 个回答

5

要从一个路径中提取出目录,可以使用 os.path.dirname(path) 这个方法。

我会把你的代码改成这样:

from os.path import join, dirname
from tkFileDialog import askopenfilename

infilename= askopenfilename()
outfilename = join(dirname(infilename), 'timeouts.txt')
with open(infilename, 'r') as f_in, open(outfilename, 'a') as f_out: 
    fout.writelines(line for line in f_in if "INF: Camera timeout" in line)

关于你的第二个问题,可以参考 如何让Tkinter文件对话框获得焦点

注意: 上面的例子部分基于Alex Thornton的 已删除的回答

撰写回答