我试图创建一个“文件搜寻器”以遍历我的目录,并在文件中搜索关键字以返回目录。我有.txt文件,这些文件包含我使用with语句访问的笔记的所有标题,我依次使用for循环搜索内容。我的问题是正在产生错误
这是classes.txt的示例,它们是目录的名称
Physics,GEology,
这是notes.txt的示例,它们是.txt的名称
ROck,other rock,
这是您可能在文件中找到的
This is a rock and it is formed by silicon
如果我输入'silicon'作为它生成的密钥并出错
这是功能,我知道这有点草率,所以请多多包涵。
def find_notes():
print('enter key words you had in your notes')
key = input('KEY> ')
with open('classes.txt','r') as f:
exist = False
contents = f.read()
contents = contents.split(',')
for i in contents:
os.chdir(i)
with open('notes.txt', 'r') as notes: # save notes into a .txt in the working direcotry,,, Check
class_notes = notes.read()
class_notes = class_notes.split(',')
for r in class_notes:
notes_file = r + '.txt'
print(notes_file)
with open(notes_file, 'r') as stinkey:
real = stinkey.read()
if key in real:
file = os.getcwd()
file = file.split('\\')
exist = True
file_name = r + '.txt'
reverse_dir()
if exist == True:
print('The notes are in:', file[-1] )# print the directory
print('The title of the notes are ', file_name)
else:
print('Notes could not be found')
答案 0 :(得分:0)
此行中引用的文件
with open('notes.txt', 'r') as notes:
要么没有内容(空字符串),要么文本连续有两个逗号。发生这种情况时,请执行以下行:
class_notes = class_notes.split(',')
将分配一个空字符串“”,该字符串将链接到.txt并导致程序尝试打开一个不存在的文件“ .txt”
编辑:将分隔线替换为:
class_notes = [x for x in class_notes.split(',') if x]
它将保留字符串,修剪空字符串,无值和类似值