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



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

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
еще одно решение
# 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
xam1816
[code python]код на форуме писать между этими тегами[/code]

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

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


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

с конца разделение \ и . (постоянна)
xam1816
  
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()
py.user.next
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)
'Операйи ФортунаЙ - '
>>>
bagira2005
xam1816
new_profile_file = open('2.txt','w')

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


еще раз спасибо
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