Reading all files in all directories
本问题已经有最佳答案,请猛点这里访问。
我的代码可以读取单个文本文件的值,但我很难从所有目录读取所有文件并将所有内容放在一起。
这是我所拥有的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | filename = '*' filesuffix = '*' location = os.path.join('Test', filename +"." + filesuffix) Document = filename thedictionary = {} with open(location) as f: file_contents = f.read().lower().split(' ') # split line on spaces to make a list for position, item in enumerate(file_contents): if item in thedictionary: thedictionary[item].append(position) else: thedictionary[item] = [position] wordlist = (thedictionary, Document) #print wordlist #print thedictionary |
请注意,我正在尝试将通配符*插入文件名以及filesuffix的通配符中。我得到以下错误:
"IOError: [Errno 2]没有这样的文件或目录:'Test/。"
我不确定这是否是正确的方法,但似乎如果我以某种方式让通配符工作—它应该工作。
我已经让这个例子工作:Python -从目录文件中读取没有在子目录中找到的文件(在那里)
这有点不同-但不知道如何更新它读取所有文件。我在想,在这最初的一组代码中:
1 2 3 4 | previous_dir = os.getcwd() os.chdir('testfilefolder') #add something here? for filename in os.listdir('.'): |
我将需要添加一些东西,其中我有一个外部for循环,但不太知道要放入什么。
任何想法吗?
Python不支持在
打开所有子目录中的所有文本文件,深度一层:
1 2 3 4 5 | import glob for filename in glob.iglob(os.path.join('Test', '*', '*.txt')): with open(filename) as f: # one file open, handle it, next loop will present you with a new file. |
打开任意嵌套目录中的所有文本文件:
1 2 3 4 5 6 7 | import os import fnmatch for dirpath, dirs, files in os.walk('Test'): for filename in fnmatch.filter(files, '*.txt'): with open(os.path.join(dirpath, filename)): # one file open, handle it, next loop will present you with a new file. |