How to find files with a string
Peter Otten
__peter__ at web.de
Wed Jan 9 11:53:26 EST 2019
anton.gridushko at gmail.com wrote:
> Hello everyone!
>
> I need to find a file, that contains a string TeNum
>
> I try to
>
> import os
> import sys
> def find_value(fname):
> value = 0
> with open(fname, encoding='cp866') as fn:
> try:
> for i in fn:
> if 'TeNam' in i:
> print(fname)
> except IndexError:
> pass
What's the purpose of that try...except?
> return {fname}
> def main():
> dirname = ('H:\\1\\3')
> os.chdir(dirname)
> res = {}
For historical reasons {} is the literal for an empty dict; you probably
want a set:
res = set()
> for i in os.listdir(dirname):
> res.update(find_value(i))
> print('Filename is: ')
> if __name__ == "__main__":
> main()
>
> But there are mistakes like
> C:\Users\Anton\AppData\Local\Programs\Python\Python36-32\python.exe
> "C:/Users/Anton/PycharmProjects/Работа с файловой системой/Перебор файлов
> из папки.py" Traceback (most recent call last):
> File "C:/Users/Anton/PycharmProjects/Работа с файловой системой/Перебор
> файлов из папки.py", line 21, in <module>
> main()
> File "C:/Users/Anton/PycharmProjects/Работа с файловой системой/Перебор
> файлов из папки.py", line 18, in main
> res.update(find_value(i))
> ValueError: dictionary update sequence element #0 has length 35; 2 is
> required
You get the error because the dict.update() methods expects pairs:
>>> d = {}
>>> d.update({(1, 2)})
>>> d
{1: 2}
A string of length 2 will be taken as a pair,
>>> d.update({"xy"})
>>> d
{1: 2, 'x': 'y'}
but a string of any other length will not:
>>> d.update({"xyz"})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: dictionary update sequence element #0 has length 3; 2 is
required
>
> Process finished with exit code 1
>
> Could you help me to solve this thread?
More information about the Python-list
mailing list