Форум сайта python.su
Задача. найти определенный файл в строке , скопировать и создать новый
1. имеется файл 1.txt (постоянно меняется)
2. нужно найти строку с началом CurrentFile= (она не изменна)
3. вырезать у этой строки название файла (CurrentFile=\\10.255.1.98\vod_1\VOD_clip\обучение - школа .mp4)
4. вырезанный текст разделенный дефисом должен быть разделен в сохранение нового файла
обучение
школа
всем спасибо кто откликнется
Офлайн
Через open() надо открыть файл. Потом надо построчно читать файл.
Вот для начала напиши этот процесс: открой файл, читай из файла каждую строку и выводи строки из файла просто на экран без всякой обработки. Когда это будет сделано, можно будет простой вывод на экран заменить на поиск подстроки в каждой строке. И так можно постепенно двигаться к решению всей задачи.
Отредактировано py.user.next (Ноя. 4, 2024 22:04:21)
Офлайн
вот где я уже
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)
Офлайн
еще одно решение
# 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
Офлайн
[code python]код на форуме писать между этими тегами[/code]
Офлайн
bagira2005Не, надо ведь проверять не номер строки, а префикс строки.
все находит сохраняет . теперь осталось вырезать конкретный текст разделенный \ и .
s = 'abc def ghi' p = 'abc' s[:len(p)] == p
Отредактировано py.user.next (Ноя. 5, 2024 10:11:22)
Офлайн
xam1816
Отредактировано bagira2005 (Ноя. 5, 2024 13:03:34)
Прикреплённый файлы:
XtvStatus.txt (642 байта)
Офлайн
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()
Офлайн
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) 'Операйи ФортунаЙ - ' >>>
Офлайн
xam1816
new_profile_file = open('2.txt','w')
Офлайн