如何在Python中在相应子目录中创建输出文本文件?
我用下面的代码选择了根目录下所有子目录里的所有 (.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)