Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/34: Рейтинг темы: голосов - 34, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 10

Сравнение имен файлов

25.09.2015, 20:40. Показов 7028. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите,как решить задачу? Есть некоторое количество строк в определенном порядке(имена файлов ) в text.txt, каждая новая строка должна совпасть с именем файла в директории.
Python
1
2
3
4
5
6
for y in open("text.txt"):
    if (y[-10:]=='.txt') :
        for x in list : 
            if (x[-10:]=='.txt') :
                if y == x :
                                         print     # Должен получиться вывод имен файлов в таком же порядке, как в text.txt
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.09.2015, 20:40
Ответы с готовыми решениями:

Сравнение имен файлов
В папке есть два файла с одним именем, но с разным расширением. Как мне сравнить имена файлов, что бы брать информацию из .txt файла, но...

Маски имён файлов
Для групповых операций с файлами используются маски имён файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых...

Формирование списка из имен файлов
Здравствуйте. Есть папка с файлами, их около 200 (пример:...

21
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
25.09.2015, 23:06
Python
1
2
import glob
print open('text.txt', 'r').read().splitlines() == glob.glob("*.*")
1
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
25.09.2015, 23:19
Python
1
2
3
4
5
6
7
from os import path
 
with open("text.txt") as infile:
    for line in infile:
        line=line.strip()
        if line.endswith('.txt') and path.isfile(line):
            print(line)
Добавлено через 10 минут
Python
3
4
with open("text.txt") as infile:
    print(*(line for line in infile.read().splitlines() if f.endswith('.txt') and path.isfile(line)), sep='\n')
1
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 10
26.09.2015, 09:46  [ТС]
Некоторый код не работает, то есть смысл открыть первый файл в строке внутри файла (zip_list.txt)на его исполнение, затем после завершения возврат к следующему файлу в строке, пока не закончатся все строки в (zip_list.txt). Вот более полный код:
Python
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/python
 
import bpy, os
 
 
import glob
for x in open('zip_list.txt', 'r').read().splitlines() == glob.glob("*.zip") : 
    bpy.ops.wm.open_mainfile(filepath=x)
        scn = bpy.data.scenes
           ''' исполнение'''
bpy.ops.vm.file.remove_mainfile(filepath = bpy.data.filepath) # Строка завершения и возврат к циклу for
Добавлено через 1 час 19 минут
Файлы (zip_list.txt) и (*.zip) расположены в одной папке. С Циклом with почему-то не работает, лучше было бы без него. А поправленный вариант выдает не тот результат. Файл (zip_list.txt) пополняется сторонней программой новой строкой в процессе выполнения этого кода(*.py).

Python
1
2
3
4
5
6
7
y = open("zip_list.txt") : 
    for line in y:
        line=line.strip()
        if line.endswith('*.zip') and path.isfile(line):
            bpy.ops.wm.open_mainfile(filepath=line)
            scn = bpy.data.scenes
                          ''' исполнение'''
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
26.09.2015, 09:51
Не работает, потому, что Вы совсем не понимаете, что происходит.
Первый раз ваше задание я понял, как "сравнить список файлов в txt файле со списком действительных файлов в папке". Теперь уже надо что-то запустить и, судя по коду, Вы собираетесь "запускать" zip-ы. Давайте четко сформулируйте, что Вам нужно.
0
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 10
26.09.2015, 10:27  [ТС]
Уточню что хотел сделать.Там исполняемый файл вместо *.zip. Смысл, открыть первый файл, записанный в строке файла ("исполн_файлы_list.txt") на его исполнение, затем после завершения возврат к следующему файлу из строки, пока не закончатся все строки в (исполн_файлы_list.txt).
В общем, исполняться должны именно те файлы в определенной последовательности что были записаны в файл.txt , взяв их из директории где они расположены. Файл (исполн_файлы_list.txt) и сами файлы находятся в одной папке.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
26.09.2015, 10:40
import subprocess
...
Считать строку и subprocess.call() её, если нужно ждать завершения, прежде чем выполнять следующую или subprocess.popen, если не нужно.
0
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 10
26.09.2015, 18:01  [ТС]
Вот что получается с кодом, но он не рабочий. Такой вариант более приемлем чем в одну строку. Где можно исправить.

Python
1
2
3
4
5
6
7
8
9
10
with open('bat_list.txt','r') as infile:          #открытие файла
    
    for line in infile :                    # чтение новой строки
        line=line.strip()               
         
        for x in subprocess.call("*.bat"):          #Вот тут не могу разобраться?
            if str(x) and str(line) :        #  Сравнение имен
                bpy.ops.wm.open_mainfile(filepath = x ) # запустить нужный файл
                scn = bpy.data.scenes
                                      "......"
Добавлено через 29 минут
Вот этот вариант выдает ошибку.
Python
1
2
3
4
5
6
for y in open('bat_list.txt','r').read().splitlines() :
    if y == subprocess.call('*.bat'):
 
        bpy.ops.wm.open_mainfile(filepath = y )
                       "....."
FileNotFoundError: [Errno 2] No such file or directory: '*.bat'
Добавлено через 30 минут
Вобщем получилось но с разницей что отсутствует ограничение на расширение.
Python
1
2
3
4
5
6
7
list = os.listdir()
for y in open('bat_list.txt','r').read().splitlines() :
    for x in list:
        
        if y == str(x):          # Вот  расширение.
 
            bpy.ops.wm.open_mainfile(filepath = y )
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
26.09.2015, 19:51
если нужны только "баты"
Python
1
glob.glob("*.bat")
например,
Python
1
2
3
4
5
6
import glob
 
files = glob.glob('*.bat')
for f in open('bat_list.txt', 'r').read().splitlines():
    if f in files:
        bpy.ops.wm.open_mainfile(filepath=f)
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
26.09.2015, 21:44
Цитата Сообщение от skmd Посмотреть сообщение
for x in subprocess.call("*.bat"): * * * * *#Вот тут не могу разобраться?
* * * * * * if str(x) and str(line) : * * * *# *Сравнение имен
Python
6
7
if line.endswith('.bat') and os.path.isfile(line):
    bpy.ops.wm.open_mainfile(filepath = line)
1
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 10
27.09.2015, 18:58  [ТС]
Возник вопрос с пустой строкой, возможно ли сделать ожидание выполнения цикла до ввода новой строки в file.txt , а после появления строки читать ее и последующую. Например

Python
1
2
3
4
5
for f in open('bat_list.txt', 'r').read().splitlines():
    if f in files:
        bpy.ops.wm.open_mainfile(filepath=f)
else:
         if f == ' ' , return             # Ожидание, при появлении происходит чтение строки.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
27.09.2015, 21:15
Пример считывания файла:

Python
1
2
3
4
5
6
7
8
9
10
11
import datetime
import time
 
with open('files.txt', 'r') as f:
    while True:
        line = f.readline()
        if line:
            print datetime.datetime.now().strftime('%H:%M:%S'), line.strip()
        else:
            print "Nothing else found in the file, waiting..."
            time.sleep(10)
Code
1
2
3
4
5
6
7
21:13:24 first line (initially in the file)
21:13:24 second line (initially in the file)
Nothing else found in the file, waiting...
21:13:34 third line
Nothing else found in the file, waiting...
21:13:44 another line
Nothing else found in the file, waiting...
0
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 10
28.09.2015, 18:04  [ТС]
Можно ли при пустой строке вернуть "y" в начало цикла wile или for ?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
with open('mail_list.txt','r') as f :
    while True:
        for y in f.read().splitlines():
            for x in list:
                if y == str(x): 
                    bpy.ops.wm.open_mainfile(filepath = y )
 
                                                  """....."""
                else y == False:              #Вернуть пустую строку (y) к for y in f.read().splitlines():
                    time.sleep(10)
                    continue
            else y == False:
                time.sleep(10)
                continue
        else y == False:
            time.sleep(10)
            continue
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
28.09.2015, 18:12
Не совсем понял идею - если закончились строки в файле - начать обрабатывать файл с начала?
0
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 10
28.09.2015, 19:49  [ТС]
Не совсем так, если пустая строка, то происходит перезагрузка самого файла .txt, то есть с начала, но чтение с той же строки. Насколько я знаю reload() перезагружает только модули.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
28.09.2015, 20:02
А что изменится, если перезагрузить файл?
0
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 10
28.09.2015, 20:14  [ТС]
Файл .txt c меняющимися строками имен файлов. Возможно ли как то сделать?
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
28.09.2015, 20:16
Я так и не понял, что изменится в файле, если его переоткрыть - изменятся уже существующие строки, убавится старых строк, добавится новых?
0
0 / 0 / 0
Регистрация: 25.09.2015
Сообщений: 10
29.09.2015, 11:32  [ТС]
Добавление новых строк в файл. Поэтому считывание той же самой пустой строки должно быть до тех пор пока она не будет заполнена.
Python
1
2
3
4
5
6
7
8
9
while True:
        for y in f.read().splitlines():       # чтение следующей пустой строки
            if y :
                for x in list:
                    "....."
                        
            if y == False :
                time.sleep(10)
                return y
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
29.09.2015, 11:34
Если все что изменится с файлом - это в него добавятся новые строки - переоткрывать его нет смысла - в моем предыдущем примере этот случай обрабатывается, - при добавлении новых строк - они считываются.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.09.2015, 11:34
Помогаю со студенческими работами здесь

Формирование списка из имен файлов
Есть несколько сотен txt файлов, нужно собрать их названия в один общий файл, разделив на два столбика. исходные названия 01-18-2021...

Сравнение имен файлов в двух каталогах
Подскажите, пожалуйста, как можно сравнить по разным параметрам (расширение,имя) файлы, находящиеся в разных папках на С++? Вводим пути...

Посимвольное сравнение имен файлов из папки
Здравствуйте, задача следующая: вытащить файлы .pdf и .doc из папки на компьютере (у меня выбор папки сделан через dialog), сравнить...

Bat на сравнение имён файлов с текущей датой
Здравствуйте. Прошу помочь с созданием файла, который будет сравнивать имя файла с текущей датой и, желательно, если имя не совпадает с...

Список имен файлов без имен папок и скрытых файлов
Здравствуйте Я пытаюсь вывести список имен файлов в текущей папке без отображения имен папок и скрытых файлов Использую следующий...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru