Найти - Пользователи
Полная версия: Поиск файла с корня диска С
Начало » Python для новичков » Поиск файла с корня диска С
1 2
varc
 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)))
Ищет с каталога, а вот с корня диска не хочет
ZerG
прав не хватает.
_nemo_
1. Путь указали с двойными \\?
2. Работать будет, но файлов будет очень много, если там система установлена

 import os
for root, dirs, files in os.walk(r'C:\\'): print(files)
_nemo_
 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
varc
Большое спасибо! Еще проблемы назрели, не получается записать имя файла с вышестоящим каталогом, т.е.
 file1 = '\install\setup.log'
, но это не критично. И как остановить поиск по первому вхождению и записать в переменную?
_nemo_
Ctrl-C
и я бы поставил последней строчкой принт с меткой окончания…
_nemo_
'''
не получается записать имя файла с вышестоящим каталогом
'''
 import os
os.startfile('..\\..\\test.txt')
_nemo_
Ctrl-C, Ctrl-Break у меня не работает,
не знаю как прервать операцию

хотя нет, работают, но с большим опозданием
_nemo_
Вот такое решение. Прерывание по нажатию любой кнопки.
Запускать через питоновское 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')
varc
Нет, я имел в виду прерывать функцию поиска в коде после первого найденного результата. Пока у меня вышла такая вот конструкция целиком.
 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()
Без поиска имени файла с вышестоящим каталогом (чтобы меньше было совпадений) и без остановки после первого результата. Не оптимизировано, но работает…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB