我正在尝试构建出现在指定目录中的文件中的所有单词的列表,然后将此列表保存到文件中。当我尝试打印任何列表的位置时,它似乎没问题(它是人类可读的),但在我将其写入文件后,我只看到字节数。这是我的代码:
import os
directoryList = ['/Users/Kuba/Desktop/Articles/1', '/Users/Kuba/Desktop/Articles/2', '/Users/Kuba/Desktop/Articles/4']
bigBagOfWords = []
for directory in directoryList:
for filename in os.listdir(directory):
filename = os.path.join(directory, filename)
currentFile = open(filename, 'rt', encoding = 'latin-1')
for line in currentFile:
currentLine = line.split(' ')
for word in currentLine:
if word.lower() not in bigBagOfWords:
bigBagOfWords.append(word.lower())
currentFile.close()
saveFile = open('dictionary.txt', 'wt', encoding = 'latin-1')
for word in bigBagOfWords:
saveFile.write(word)
saveFile.write('\n')
saveFile.close()
File" dictionary.txt"包含如下所示的行:
<00> 0000 0007 0078 0064 006b 002e 0074 0078 0074 696c 6f63 626c 6f62 0000 0010 0000 00ec 0000 09e8 ffff ffff ffff 0000 0000
如何强制python以人类可读的编码方式编写这些单词?我在这里做了哪些重大错误吗?
答案 0 :(得分:1)
您已打开.DS_Store
OS X desktop information file并将其添加到输出文件中。当您在Sublime Text中打开文件时,文本编辑器会以圆柱形十六进制转储格式显示二进制文件。
字符序列locblob
是专有格式的特征。您还向我们展示的十六进制转储中隐藏了UTF-16中的文本xdk.txt
; .DS_Store
文件存储非本机OS X文件系统上的文件的图标位置和其他属性。
在循环目录时过滤掉这些文件。通常,您希望忽略以.
开头的文件:
for filename in os.listdir(directory):
if filename[0] == '.':
continue # skip hidden files
filename = os.path.join(directory, filename)