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

时间:2014-04-03 07:03:58

标签: python tkinter

我使用以下代码选择了根目录下所有子目录中存在的所有(.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)文件。

如何将输出保存在主(.txt)源文件所在的相应文件夹中?

(*根目录不是当前的工作目录。它是不同的)

2 个答案:

答案 0 :(得分:0)

使用os.path.dirname()获取文件所在目录的路径。

如果您需要根据旧文件名生成新文件名,则可以使用os.path.split()来将文件名拆分为目录和基本名称:

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

答案 1 :(得分: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

如果您需要将这些文件相加并在加载它们之后执行一些操作。你需要分别保存它们的路径。