bagira2005
Ноя. 4, 2024 09:00:42
Задача. найти определенный файл в строке , скопировать и создать новый
1. имеется файл 1.txt (постоянно меняется)
2. нужно найти строку с началом CurrentFile= (она не изменна)
3. вырезать у этой строки название файла (CurrentFile=\\10.255.1.98\vod_1\VOD_clip\обучение - школа .mp4)
4. вырезанный текст разделенный дефисом должен быть разделен в сохранение нового файла
обучение
школа
всем спасибо кто откликнется
py.user.next
Ноя. 4, 2024 22:03:43
Через open() надо открыть файл. Потом надо построчно читать файл.
Вот для начала напиши этот процесс: открой файл, читай из файла каждую строку и выводи строки из файла просто на экран без всякой обработки. Когда это будет сделано, можно будет простой вывод на экран заменить на поиск подстроки в каждой строке. И так можно постепенно двигаться к решению всей задачи.
bagira2005
Ноя. 5, 2024 07:04:42
вот где я уже
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 08:00:39
еще одно решение
# 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
Ноя. 5, 2024 10:03:46
[code python]код на форуме писать между этими тегами[/code]
скиньте файл, и что нужно получить на выходе (просто руками написать)
py.user.next
Ноя. 5, 2024 10:09:04
bagira2005
все находит сохраняет . теперь осталось вырезать конкретный текст разделенный \ и .
Не, надо ведь проверять не номер строки, а префикс строки.
Так что надо проверять префикс и выводить на экран только нужные строки (в которых префикс есть).
Префикс можно взять через срез
s = 'abc def ghi'
p = 'abc'
s[:len(p)] == p
bagira2005
Ноя. 5, 2024 13:02:17
xam1816
нужно из это строки постоянно вытягивать CurrentFile=\\10.255.1.98\vod_1\VOD_CINEMA\
Операйи ФортунаЙ - .mp4 (строка меняет пути )
с конца разделение \ и . (постоянна)
xam1816
Ноя. 5, 2024 23:09:06
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
Ноя. 6, 2024 04:34:11
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
Ноя. 6, 2024 07:53:45
xam1816
new_profile_file = open('2.txt','w')
спасибо Большое все работает.
import configparser
from pathlib import Path, PureWindowsPath
хорошее решение 1. как правильно указать не print а сохранить в новый файл ?
2. дефис не нужен в копировании например:
обучение - (результат должен быть
обучение)
или
Изучение текста - скорочтение (результат должен быть
Изучение текста
скорочтение)
3. все это запустить в цикл обновление каждые 5 сек
еще раз спасибо