Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 4, 2017 14:02:19

varc
Зарегистрирован: 2017-01-04
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Поиск файла с корня диска С

 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)))
Ищет с каталога, а вот с корня диска не хочет

Офлайн

#2 Янв. 4, 2017 14:11:27

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Поиск файла с корня диска С

прав не хватает.



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Янв. 4, 2017 14:26:33

_nemo_
Зарегистрирован: 2017-01-02
Сообщения: 34
Репутация: +  1  -
Профиль   Отправить e-mail  

Поиск файла с корня диска С

1. Путь указали с двойными \\?
2. Работать будет, но файлов будет очень много, если там система установлена

 import os
for root, dirs, files in os.walk(r'C:\\'): print(files)

Офлайн

#4 Янв. 4, 2017 14:31:34

_nemo_
Зарегистрирован: 2017-01-02
Сообщения: 34
Репутация: +  1  -
Профиль   Отправить e-mail  

Поиск файла с корня диска С

 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

Офлайн

#5 Янв. 4, 2017 15:40:39

varc
Зарегистрирован: 2017-01-04
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Поиск файла с корня диска С

Большое спасибо! Еще проблемы назрели, не получается записать имя файла с вышестоящим каталогом, т.е.

 file1 = '\install\setup.log'
, но это не критично. И как остановить поиск по первому вхождению и записать в переменную?

Офлайн

#6 Янв. 4, 2017 15:58:47

_nemo_
Зарегистрирован: 2017-01-02
Сообщения: 34
Репутация: +  1  -
Профиль   Отправить e-mail  

Поиск файла с корня диска С

Ctrl-C
и я бы поставил последней строчкой принт с меткой окончания…

Офлайн

#7 Янв. 4, 2017 16:05:06

_nemo_
Зарегистрирован: 2017-01-02
Сообщения: 34
Репутация: +  1  -
Профиль   Отправить e-mail  

Поиск файла с корня диска С

'''
не получается записать имя файла с вышестоящим каталогом
'''

 import os
os.startfile('..\\..\\test.txt')

Офлайн

#8 Янв. 4, 2017 16:17:52

_nemo_
Зарегистрирован: 2017-01-02
Сообщения: 34
Репутация: +  1  -
Профиль   Отправить e-mail  

Поиск файла с корня диска С

Ctrl-C, Ctrl-Break у меня не работает,
не знаю как прервать операцию

хотя нет, работают, но с большим опозданием

Отредактировано _nemo_ (Янв. 4, 2017 16:20:09)

Офлайн

#9 Янв. 4, 2017 18:08:05

_nemo_
Зарегистрирован: 2017-01-02
Сообщения: 34
Репутация: +  1  -
Профиль   Отправить e-mail  

Поиск файла с корня диска С

Вот такое решение. Прерывание по нажатию любой кнопки.
Запускать через питоновское 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')

Офлайн

#10 Янв. 4, 2017 18:47:32

varc
Зарегистрирован: 2017-01-04
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Поиск файла с корня диска С

Нет, я имел в виду прерывать функцию поиска в коде после первого найденного результата. Пока у меня вышла такая вот конструкция целиком.

 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()
Без поиска имени файла с вышестоящим каталогом (чтобы меньше было совпадений) и без остановки после первого результата. Не оптимизировано, но работает…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version