Форум сайта python.su
import os file1 = '12.txt' for root, dirs, files in os.walk(r'C:\Temp'): for name in files: if name == file1: print (os.path.abspath(os.path.join(root, name)))
Офлайн
прав не хватает.
Офлайн
1. Путь указали с двойными \\?
2. Работать будет, но файлов будет очень много, если там система установлена
import os for root, dirs, files in os.walk(r'C:\\'): print(files)
Офлайн
for root, dirs, files in os.walk(r'C:\\'): #print(files) file1 = 'setup.log' for name in files: if name == file1: print (os.path.abspath(os.path.join(root, name))) break
Офлайн
Большое спасибо! Еще проблемы назрели, не получается записать имя файла с вышестоящим каталогом, т.е.
file1 = '\install\setup.log'
Офлайн
Ctrl-C
и я бы поставил последней строчкой принт с меткой окончания…
Офлайн
'''
не получается записать имя файла с вышестоящим каталогом
'''
import os os.startfile('..\\..\\test.txt')
Офлайн
Ctrl-C, Ctrl-Break у меня не работает,
не знаю как прервать операцию
…
хотя нет, работают, но с большим опозданием
Отредактировано _nemo_ (Янв. 4, 2017 16:20:09)
Офлайн
Вот такое решение. Прерывание по нажатию любой кнопки.
Запускать через питоновское idle:
import os, sys, msvcrt def terminate(): if msvcrt.kbhit(): #print('process terminated') sys.exit() file1 = 'test.txt' print('Start search') for root, dirs, files in os.walk(r'C:\\'): #print(files) for name in files: print(name) terminate() if name == file1: print (os.path.abspath(os.path.join(root, name))) break print('Finish search')
Офлайн
Нет, я имел в виду прерывать функцию поиска в коде после первого найденного результата. Пока у меня вышла такая вот конструкция целиком.
import os namefile = '12.txt' for root, dirs, files in os.walk(r'C:\\'): for name in files: if name == namefile: pathtofile = (os.path.abspath(os.path.join(root, name))) # print(pathtofile) f = open(pathtofile,'r', encoding='cp1251') filedata = f.read() f.close() newdata = filedata.replace("вася","вася\nмаша - козел") f = open(pathtofile,'w') f.write(newdata) f.close()
Офлайн