如何在Python中在相应子目录中创建输出文本文件?

0 投票
2 回答
802 浏览
提问于 2025-04-18 01:07

我用下面的代码选择了根目录下所有子目录里的所有 (.txt) 文件。

import Tkinter, tkFileDialog

root = Tkinter.Tk()
root.withdraw()
dirname = tkFileDialog.askdirectory(parent=root,initialdir="/",title='Please select a directory')
pattern = "*.txt"
for path, subdirs, files in os.walk(dirname):
    for name in files:
        if fnmatch(name, pattern):
            filename=os.path.join(path,name)

现在我有大约100个 (.txt) 文件,它们分布在不同的子目录里。接下来,我使用NLTK来分析这些 (.txt) 文件,并想把分析的结果保存到各自的子目录里,作为单独的 (.txt) 文件。

我该怎么做才能把结果保存到源文件所在的文件夹里呢?

(* 根目录和当前工作目录不是同一个,它们是不同的)

2 个回答

0

如果你的解决方案在 O(n) 的范围内,那就直接读取和写入吧。

import Tkinter, tkFileDialog

root = Tkinter.Tk()
root.withdraw()
dirname = tkFileDialog.askdirectory(parent=root,initialdir="/",title='Please select a 

directory')
pattern = "*.txt"
for path, subdirs, files in os.walk(dirname):
    for name in files:
        if fnmatch(name, pattern):
            filename=os.path.join(path,name)
            new_filename=os.path.join(path,'new'+name)
            #do your work for filename and save to new_filename

如果你需要把这些文件加起来,并在加载完它们之后做一些处理,那你需要分别保存它们的路径。

0

可以使用 os.path.dirname() 来获取一个文件所在的文件夹路径。

如果你需要根据旧文件名生成一个新文件名,可以使用 os.path.split(),这个方法可以把文件名分成文件夹路径和基本文件名:

directory, base = os.path.split(filename)
new_filename = os.path.join(directory, 'analyzed_' + filename)

撰写回答