Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 4, 2024 09:00:42

bagira2005
Зарегистрирован: 2024-11-04
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

нужна помощь

Задача. найти определенный файл в строке , скопировать и создать новый
1. имеется файл 1.txt (постоянно меняется)
2. нужно найти строку с началом CurrentFile= (она не изменна)
3. вырезать у этой строки название файла (CurrentFile=\\10.255.1.98\vod_1\VOD_clip\обучение - школа .mp4)
4. вырезанный текст разделенный дефисом должен быть разделен в сохранение нового файла
обучение
школа



всем спасибо кто откликнется

Офлайн

#2 Ноя. 4, 2024 22:03:43

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9860
Репутация: +  853  -
Профиль   Отправить e-mail  

нужна помощь

Через open() надо открыть файл. Потом надо построчно читать файл.
Вот для начала напиши этот процесс: открой файл, читай из файла каждую строку и выводи строки из файла просто на экран без всякой обработки. Когда это будет сделано, можно будет простой вывод на экран заменить на поиск подстроки в каждой строке. И так можно постепенно двигаться к решению всей задачи.



Отредактировано py.user.next (Ноя. 4, 2024 22:04:21)

Офлайн

#3 Ноя. 5, 2024 07:04:42

bagira2005
Зарегистрирован: 2024-11-04
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

нужна помощь

вот где я уже

or_profile_file = open('1.txt')
new_profile_file = open('2.txt','w')

lines_to_write = # ищу 9 строку

for linenum, line in enumerate(or_profile_file):
if linenum+1 in lines_to_write:
new_profile_file.write(line)

or_profile_file.close()
new_profile_file.close()


все находит сохраняет . теперь осталось вырезать конкретный текст разделенный \ и .

Отредактировано bagira2005 (Ноя. 5, 2024 07:45:11)

Офлайн

#4 Ноя. 5, 2024 08:00:39

bagira2005
Зарегистрирован: 2024-11-04
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

нужна помощь

еще одно решение
# read by line numbers
def get_lines(fp, line_numbers):
return (x for i, x in enumerate(fp) if i in line_numbers)
with open(r“1.txt”, ‘r’) as fp:
# read line 4 and 7
lines = get_lines(fp, )
# print each line
for line in lines:
print(line.strip())
# Вывод:
# Fourth line
# Seventh Line

Офлайн

#5 Ноя. 5, 2024 10:03:46

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1350
Репутация: +  118  -
Профиль   Отправить e-mail  

нужна помощь

[code python]код на форуме писать между этими тегами[/code]

скиньте файл, и что нужно получить на выходе (просто руками написать)

Офлайн

#6 Ноя. 5, 2024 10:09:04

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9860
Репутация: +  853  -
Профиль   Отправить e-mail  

нужна помощь

bagira2005
все находит сохраняет . теперь осталось вырезать конкретный текст разделенный \ и .
Не, надо ведь проверять не номер строки, а префикс строки.
Так что надо проверять префикс и выводить на экран только нужные строки (в которых префикс есть).

Префикс можно взять через срез
  
s = 'abc def ghi'
p = 'abc'
 
s[:len(p)] == p



Отредактировано py.user.next (Ноя. 5, 2024 10:11:22)

Офлайн

#7 Ноя. 5, 2024 13:02:17

bagira2005
Зарегистрирован: 2024-11-04
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

нужна помощь

xam1816


нужно из это строки постоянно вытягивать CurrentFile=\\10.255.1.98\vod_1\VOD_CINEMA\Операйи ФортунаЙ - .mp4 (строка меняет пути )

с конца разделение \ и . (постоянна)

Отредактировано bagira2005 (Ноя. 5, 2024 13:03:34)

Прикреплённый файлы:
attachment XtvStatus.txt (642 байта)

Офлайн

#8 Ноя. 5, 2024 23:09:06

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1350
Репутация: +  118  -
Профиль   Отправить e-mail  

нужна помощь

  
import configparser
from pathlib import Path, PureWindowsPath
 
def get_current_file_path(xtv_file):
    config = configparser.ConfigParser()
    with open(xtv_file, 'r', encoding='1251') as file:
        config.read_file(file)
    current_file_path = config.get('XTV', 'CurrentFile', fallback=None)
    return current_file_path
 
def get_filename_from_path(path):
    path = Path(PureWindowsPath(path))
    return path.name
 
def main():
    current_path = get_current_file_path('XtvStatus.txt')
    if current_path:
        filename = get_filename_from_path(current_path)
        print(filename)
    else:
        print('путь не найден')
 
if __name__ == '__main__':
    main()

Офлайн

#9 Ноя. 6, 2024 04:34:11

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9860
Репутация: +  853  -
Профиль   Отправить e-mail  

нужна помощь

bagira2005
3. вырезать у этой строки название файла
  
>>> def get_substring(text):
...     part_name = text.split('\\')[-1]
...     part_base = part_name.split('.')[0]
...     out = part_base
...     return out
...
>>> text = r'CurrentFile=\\10.255.1.98\vod_1\VOD_clip\обучение - школа .mp4'
>>> get_substring(text)
'обучение - школа '
>>>
>>> text =r'CurrentFile=\\10.255.1.98\vod_1\VOD_CINEMA\Операйи ФортунаЙ - .mp4'
>>> get_substring(text)
'Операйи ФортунаЙ - '
>>>



Офлайн

#10 Ноя. 6, 2024 07:53:45

bagira2005
Зарегистрирован: 2024-11-04
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

нужна помощь

xam1816
new_profile_file = open('2.txt','w')

спасибо Большое все работает.
import configparser
from pathlib import Path, PureWindowsPath хорошее решение
1. как правильно указать не print а сохранить в новый файл ?
2. дефис не нужен в копировании например: обучение - (результат должен быть обучение)
или Изучение текста - скорочтение (результат должен быть
Изучение текста
скорочтение
)
3. все это запустить в цикл обновление каждые 5 сек


еще раз спасибо

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version