С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
 Аватар для Delvin-fil
35 / 33 / 19
Регистрация: 22.01.2015
Сообщений: 215

Извлечение из файлов и запись в новый

22.04.2017, 08:50. Показов 1780. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую всех!
Тут появилась такая задачка(просмотрел несколько форумов и ничего не нашел(наверняка плохо смотрел(но это всегда так после бессонной ночи в поисках решения))):
Есть несколько файлов
одинаковой структуры
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ cat file1.ext file2.ext
file1.ext
Name=file1
Comment="bla-bla"
Type=text
Category=system
Lang=en
 
file1.ext
Name=file2
Comment="ух ты"
Type=docs
Category=user
Lang=ru

Вопрос: как прочитать все это и вывести в файл такое:
Bash
1
2
3
$ cat out.txt
file1 text en
file2 docs ru
Изловить что-то отдельное легко:
Python
1
2
3
4
5
6
7
8
9
10
11
12
directory = '/path/files'
files = os.listdir(directory)
images = list(filter(lambda x: x.endswith('.ext'), files))
 
word = u'Name='
for d, dirs, images in os.walk(directory):
    for f in images:
        with io.open(f, encoding='utf-8') as file:
            for line in file:
                if word in line:
                    out = re.sub(r'Name=', '', line)
                    print(out, end='')
И если создать последовательно три цикла для name, type и lang, то print выводит, а в файл пишет только одну строку.


Помогите, пожалуйста.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.04.2017, 08:50
Ответы с готовыми решениями:

Извлечение определённых фрагментов текста из XML-файлов и их запись в одноимённые с XML-файлами TXT-файлы
Добрый вечер! Есть задача нужно из XML файла выдрать кусок текста находящегося между тегами <body></body> и поместить этот...

Работа с файлами запись из двух файлов в новый
Помогите пожалуйста, ругается, не пойму что не так. По логике вроде все правильно. # Открываем первый файл только для чтения ...

Сохранение различных файлов в теле програмы (в создаваемой нами) и извлечение их(файлов) на локальный диск
Кароч тута такие дела: есть куча разных файликов которые пользователь проги недолжен видеть.При запуске моей проги, она(прога) всю ту туеву...

15
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
22.04.2017, 18:27
Python
1
2
3
4
with open('input01.txt') as f:
    d = dict(map(lambda x: x.split('='), [l for l in f.read().split('\n')]))
 
print(d['Name'], d['Type'], d['Lang'])
Code
1
file1 text en
0
 Аватар для Delvin-fil
35 / 33 / 19
Регистрация: 22.01.2015
Сообщений: 215
22.04.2017, 18:49  [ТС]
Ты наверное не так понял.
Надо взять из всех файлов в каталоге определенные значения и записать их в отдельный файл.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
22.04.2017, 19:01
Python
1
2
3
4
5
6
7
import glob
 
with open('output01.txt', 'w') as output_file:
    for f in glob.glob('in*.txt'):  # mask
        with open(f) as opened_file:
            d = dict(map(lambda x: x.split('='), [l for l in opened_file.read().split('\n')]))
            output_file.write('{} {} {}\n'.format(d['Name'], d['Type'], d['Lang']))
1
 Аватар для Delvin-fil
35 / 33 / 19
Регистрация: 22.01.2015
Сообщений: 215
22.04.2017, 20:31  [ТС]
Python
1
2
3
4
Traceback (most recent call last):
  File "/home/fil/codding/app/test-sort.py", line 11, in <module>
    d = dict(map(lambda x: x.split('='), [l for l in opened_file.read().split('\n')]))
ValueError: dictionary update sequence element #0 has length 1; 2 is required
Да что хоть занапасть то?
Весь stackoverflow прерыл... Даже подсунул "правильный" файл, из системы
Цитата Сообщение от lxrandr.desktop
[Desktop Entry]
Name=Monitor Settings
Name[ru]=Настройки дисплея
Comment=Change screen resolution and configure external monitors
Comment[ru]=Показывать одинаковый экран на ЖК дисплее ноутбука и на внешнем дисплее
Exec=lxrandr
Icon=display
Terminal=false
Type=Application
Categories=GTK;Settings;HardwareSettings ;
Может сначала вырезать первую строку с "[Desktop Entry]"? Но в моих то файлах ее нет.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
22.04.2017, 20:50
Цитата Сообщение от Delvin-fil Посмотреть сообщение
Но в моих то файлах ее нет.
Я с вашими файлами и делал свой пример.

Добавлено через 28 секунд
Скрипт там же, где файлы?
0
 Аватар для Delvin-fil
35 / 33 / 19
Регистрация: 22.01.2015
Сообщений: 215
22.04.2017, 20:57  [ТС]
да, там же
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
22.04.2017, 21:03
Python
1
opened_file.read().split('\n')[1:]
0
757 / 306 / 190
Регистрация: 20.05.2016
Сообщений: 593
22.04.2017, 21:16
Jabbson, обратите внимание на
Python
1
[l for l in opened_file.read().split('\n')]
По случаю субботнего вечера, сугубо отдохновения для
плохочитаемый код в декларативном стиле
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# import os.path
import glob
from functools import partial
 
 
topdir = '.'
ext = '.ext'
requests = ('Name', 'Type', 'Lang')
sep = '='
 
fmt = ' '.join(['{{{}}}'] * len(requests)).format(*requests)
 
# filespaths = (os.path.join(path, name)
#               for path, dirs, files in os.walk(topdir)
#               for name in files if name.endswith(ext))
 
filespaths = glob.iglob(topdir)
filesobjs = map(open, filespaths)
split = partial(str.split, sep=sep)
results = (dict(map(split, filter(None, map(str.strip, file)))) for file in filesobjs)
 
print('\n'.join(map(fmt.format_map, results)))
0
 Аватар для Delvin-fil
35 / 33 / 19
Регистрация: 22.01.2015
Сообщений: 215
22.04.2017, 21:23  [ТС]
Все равно не работает.
Буду завтра копать. Уморился сегодня уже
Спасибо!

Добавлено через 4 минуты
Здесь
типичный файл

[Desktop Entry]
Version=1.0
Type=Application
Exec=zim %f
Icon=zim
StartupNotify=true
Terminal=false
Categories=Utility;TextEditor;GTK;
MimeType=application/x-zim-notebook;text/x-zim-wiki;application/x-gjots;
Keywords=Text;Editor;Write;Wiki;Notes;No tebook;Journal;
Name=Zim Desktop Wiki
Comment=Edit text files "wiki style"
GenericName=Text Editor
Name[cs]=Zim Desktop Wiki
Comment[cs]=Upravujte textové soubory jako wiki
GenericName[cs]=Textový wiki editor
Name[de]=Zim Desktop Wiki
Comment[de]=Bearbeite Textdateien im 'Wiki-Stil'
GenericName[de]=Texteditor
Name[es]=Zim Wiki de escritorio
Comment[es]=Editar archivos de texto "estilo wiki"
GenericName[es]=Editor de texto
Name[fr]=Zim, le Wiki de bureau
Comment[fr]=Modifier les fichiers textes «*à la façon wiki*»
GenericName[fr]=Éditeur de texte
Name[he]=זים הוויקי השולחני
Comment[he]=ערוך קבצי טקסט "בסגנון ויקי"
GenericName[he]=עורך טקסט
Name[it]=Zim Desktop Wiki
Comment[it]=Crea file di testo in stile "Wiki"
GenericName[it]=Editor di Testo
Name[nl]=Zim Desktop Wiki
Comment[nl]=Bewerk tekstbestanden ""wiki style"'
GenericName[nl]=Tekst Verwerker
Name[pt]=Wiki Pessoal Zim
Comment[pt]=Editor de texto "tipo wiki"
GenericName[pt]=Editor de Texto
Name[sv]=Zim Desktop Wiki
Comment[sv]=Redigera textfiler i wikimiljö
GenericName[sv]=Textredigerare
Name[da]=Zim Desktop Wiki
Comment[da]=Redigér tekst filer i "wikistil"
GenericName[da]=Tekstredigeringsprogram
Name[ca]=Zim Wiki d'escriptori
Comment[ca]=Editar arxius de text "wiki style"
GenericName[ca]=Editor de text
Name[et]=Zim Töölaua Viki
Comment[et]="Viki stiilis" teksti kirjutamine
GenericName[et]=Tekstiredator
Name[gl]=Wiki Personal Zim
Comment[gl]=Editor de texto "ó xeito Wiki"
GenericName[gl]=Editor de textos
Name[ja]=Zim デスクトップ・ウィキ
Comment[ja]="ウィキ形式"の文書を作成します
GenericName[ja]=テキスト・エディタ
Name[pt_BR]=Zim Desktop Wiki
Comment[pt_BR]=Edite arquivos de texto no "estilo wiki"
GenericName[pt_BR]=Editor de texto
Name[ru]=Zim Desktop Wiki
Comment[ru]=Редактировать текстовые файлы в стиле "wiki"
GenericName[ru]=Редактор текста
Name[zh_CN]=Zim 桌面维基
Comment[zh_CN]=编辑文本文件“维基风格”
GenericName[zh_CN]=文本编辑器
GenericName[ar]=محرّر النصّ
Name[en_GB]=Zim Desktop Wiki
Comment[en_GB]=Edit text files "wiki style"
GenericName[en_GB]=Text Editor
GenericName[fa]=ویرایشگر متن
Name[fi]=Zim työpöytä-wiki
Comment[fi]=Muokkaa tekstitiedostoja "wiki-tyylillä"
GenericName[fi]=Tekstieditori
GenericName[ko]=텍스트 편집기
Name[ml]=സിം പണിയിട വിക്കി
GenericName[ml]=ടെക്സ്റ്റ് എഴുത്തിടം
Name[nb]=Zim Skrivebords-wiki
Comment[nb]=Endre tekstfiler "på wiki måten"
GenericName[nb]=Tekstbehandler
Comment[pl]=Edytuj w stylu Wiki
GenericName[pl]=Edytor tekstu
Name[tr]=Zim Desktop Wiki
Comment[tr]=Metin dosyalarını "wiki tarzı"nda düzenleyin
GenericName[tr]=Metin Düzenleyici
Comment[bg]=Редактирай текстовите файлове като wiki
GenericName[bg]=Текстов редактор
Name[eu]=Zim Mahaigaineko Wikia
Comment[eu]=Editatu testu fitxategiak "wiki erara"
GenericName[eu]=Testu-editorea
GenericName[sk]=Textový editor
GenericName[sr]=Уређивач текста
Name[zh_TW]=Zim 桌面維基
Comment[zh_TW]=以維基樣式編輯文字檔案
GenericName[zh_TW]=文字編輯器
X-Ayatana-Desktop-Shortcuts=X-QuickNote;X-QuickNoteClipboard;

[X-QuickNote Shortcut Group]
Name=Quick Note
Exec=zim --plugin quicknote
TargetEnvironment=Unity

[X-QuickNoteClipboard Shortcut Group]
Name=Quick Note from Clipboard
Exec=zim --plugin quicknote input=clipboard
TargetEnvironment=Unity



Ваш код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/env python3.6
# -*- coding: utf-8 -*-
import re
import os
import io
import glob
 
with open('output01.txt', 'w') as output_file:
    for ik in glob.glob('*.desktop'):  # mask
        with open(ik) as opened_file:
            d = dict(map(lambda x: x.split('='), [l for l in opened_file.read().split('\n')[1:]]))
            output_file.write('{} {} {}\n'.format(d['Name'], d['Type'], d['Lang']))
Выхлоп:
Traceback (most recent call last):
File "/home/fil/codding/app/fack-sort.py", line 11, in <module>
d = dict(map(lambda x: x.split('='), [l for l in opened_file.read().split('\n')[1:]]))
ValueError: dictionary update sequence element #9 has length 1; 2 is required
[Finished in 0.1s with exit code 1]
[cmd: ['/usr/bin/python3.6', '-u', '/home/fil/codding/app/fack-sort.py']]
[dir: /home/fil/codding/app]
[path: /usr/local:/usr/local/lib:/usr/local/bin:/usr/lib/ccache/bin:/usr/lib64/ccache/bin/:/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.9.4:/usr/games/bin:/usr/gcc/4.4/bin:/opt/firefox/]
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
22.04.2017, 21:27
Не, не, если вы даете входной файл, вы гарантируете формат. Какой вы дали формат?

Code
1
2
3
4
5
Name=file1
Comment="bla-bla"
Type=text
Category=system
Lang=en
вот такой - все строки имеют = в них
0
 Аватар для Delvin-fil
35 / 33 / 19
Регистрация: 22.01.2015
Сообщений: 215
22.04.2017, 22:18  [ТС]
Ну да. Просто рылся в системе и вспомнил про каталог с аналогичным форматом файлов. Мне показалось интересным посмотреть. Их там больше!
Завтра перепроверю на своих файлах, ибо сегодня уже сил нет.

Добавлено через 16 минут
Таки да,
Python
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/env python3.6
# -*- coding: utf-8 -*-
import re
import os
import io
import glob
 
with open('output01.txt', 'w') as output_file:
    for ik in glob.glob('*.desktop'):  # mask
        with open(ik) as opened_file:
            d = dict(map(lambda x: x.split('='), [l for l in opened_file.read().split('\n')]))
            output_file.write('{} {} {}\n'.format(d['Name'], d['Type'], d['Lang']))
полет нормальный:
file2 docs ru
file3 img fr
file1 text en
file4 docs en
Огромное спасибо!

А что не так с системными *.desktop файлами? Почему их не хочет?

Добавлено через 7 минут
Понял! У них последовательность Name, Type, Lang другая(Lang может и не быть).
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
23.04.2017, 03:50
Последовательность не имеет значение, а если какого-то из значений может не быть, то запрашивать его лучше через .get, так не будет ошибки.
0
 Аватар для Delvin-fil
35 / 33 / 19
Регистрация: 22.01.2015
Сообщений: 215
25.04.2017, 07:02  [ТС]
Jabbson, В общем, путем голововредительства наваял следующее:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/env python3.6
# -*- coding: utf-8 -*-
import re
import os
import glob
import sys
 
directory = '/usr/share/applications/'
files = os.listdir(directory)
 
with open('menu.test', 'w') as f_cl:
    clear = 'menu "TEST" - {\n'
    f_cl.write(clear)
 
 
def parse_file():
    for f in glob.glob(directory + '*.desktop'):
        with open(
                f, 'r', encoding="utf-8") as f_in, open('menu.test',
                                                        'a') as f_out:
            found = str(f_in.read())
            Name = re.findall('\nName=(.*\w+)', found)
            Icon = re.findall('\nIcon=(.*\w+)', found)
            Exec = re.findall('\nExec=(.*\w+)', found)
            menu = 'prog ', '"' + str(Name) + '"', Icon, Exec
            menu = re.sub(r'\[|\(|\'|\]|\)|\,|\\', '', str(menu))
            f_out.write(menu + "\n")
 
 
def out_file():
    with open('menu.test', 'a') as f_fn:
        clear = '}\n'
        f_fn.write(clear)
 
 
#print (len(files))
if __name__ == '__main__':
    parse_file()
    out_file()
Выхлоп такой
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
menu "TEST" - {
prog  "Task Manager" utilities-system-monitor lxtask
prog  "Terminal Emulator" utilities-terminal exo-open --launch TerminalEmulator
prog  "LRF Viewer" calibre-viewer lrfviewer %f
prog  "calibre" calibre-gui calibre --detach %F
prog  "Scan Tailor" scantailor scantailor
prog  "MyRuLib" myrulib myrulib
prog  "E-book Viewer" calibre-viewer ebook-viewer --detach %f
prog  "Web Browser" web-browser exo-open --launch WebBrowser %u
prog  "Preferred Applications" preferences-desktop libfm-pref-apps
prog  "LibreOffice Calc New Spreadsheet" libreoffice-calc libreoffice --calc %F libreoffice --calc
prog  "Edit E-book" calibre-ebook-edit ebook-edit --detach %f
prog  "Image Viewer" gpicview gpicview %f
prog  "Character Map" accessories-character-map gucharmap
prog  "Access Prompt" security-medium /usr/libexec/gcr-prompter
prog  "UFO: Alien Invasion" ufo-ai ufo
prog  "Desktop Session Settings" session-properties lxsession-edit
prog  "PDF Mod" pdfmod pdfmod %U
prog  "E16" /usr/share/e16/icons/e16.png e16
prog  "Document Viewer" evince evince %U
prog  "Gwget Download Manager" gwget gwget
prog  "XTerm" xterm-color_48x48 xterm
prog  "Terminology" terminology terminology
prog  "Deluge" deluge deluge-gtk %U
prog  "QCAD" /root/opt/qcad-3.16.5-trial-linux-x86_64/qcad_icon.png "/root/opt/qcad-3.16.5-trial-linux-x86_64/qcad" %F
prog  "Vivaldi" vivaldi /usr/bin/vivaldi-stable %U
prog  "Mouse and Touchpad" preferences-desktop-peripherals xfce4-mouse-settings
prog  "guvcview" /usr/share/pixmaps/guvcview/guvcview.png guvcview
prog  "About GNOME" gnome-logo-icon-transparent gnome-about
prog  "Lazarus IDE" lazarus startlazarus
prog  "PyShell 3.0" PyCrust-3.0 pyshell-3.0
prog  "Print Preview" document-print-preview evince-previewer %U
prog  "sandbox" sandbox sandbox
prog  "PyAlaMode 3.0" PyCrust-3.0 pyalamode-3.0
prog  "Desktop Preferences" user-desktop pcmanfm --desktop-pref
prog  "Appearance" preferences-desktop-theme xfce4-appearance-settings
prog  "Designer" designer designer
prog  "Audacious" audacious audacious %U
prog  "PuTTY" putty putty
prog  "LibreOffice Math New Formula" libreoffice-math libreoffice --math %F libreoffice --math
prog  "GNU Emacs" emacs /usr/bin/emacs %F
prog  "Brightness Indicator" /usr/share/notify-osd/icons/Humanity/scalable/status/notification-display-brightness-full.svg /opt/extras.ubuntu.
com/indicator-brightness/indicator-brightness
prog  "nedit" nedit nedit
prog  "Data Display Debugger" ddd ddd
prog  "Gerbv Gerber File Viewer" gerbv gerbv %F
prog  "Geoclue Demo agent" mark-location-symbolic /usr/libexec/geoclue-2.0/demos/agent
prog  "Desktop" preferences-desktop-wallpaper xfdesktop-settings
prog  "File Manager" system-file-manager thunar-settings
prog  "Openbox" openbox openbox
prog  "Hardware Lister" /usr/share/lshw/artwork/logo.svg /usr/sbin/gtk-lshw
prog  "Display" video-display xfce4-display-settings
prog  "YAGF" yagf yagf %F
prog  "LXTerminal" lxterminal lxterminal
prog  "Run Program" gtk-execute xfce4-appfinder --collapsed
prog  "Workspaces" xfce4-workspaces xfwm4-workspace-settings
prog  "SMPlayer" smplayer smplayer %U
prog  "Privilege granting" gksu.png gksu-properties
prog  "Bulk Rename" Thunar /usr/lib64/Thunar/ThunarBulkRename %F
prog  "Galculator" galculator galculator
prog  "Openbox Configuration Manager" obconf obconf %f
prog  "Keyboard" preferences-desktop-keyboard xfce4-keyboard-settings
prog  "Gnumeric" gnumeric gnumeric %U
prog  "ARandR" display arandr
prog  "Customize Look and Feel" preferences-desktop-theme lxappearance
prog  "Liferea" liferea liferea %U
prog  "Scheduled tasks" /usr/share/pixmaps/gnome-schedule/gnome-schedule.svg /usr/bin/gnome-schedule
prog  "Java Web Start" java-icon48 javaws %u
prog  "UFO: Alien Invasion Server" ufo-ai ufoded
prog  "View file"  /usr/bin/gcr-viewer
prog  "Mail Reader" internet-mail exo-open --launch MailReader %u
prog  "LibreOffice Writer New Document" libreoffice-writer libreoffice --writer %F libreoffice --writer
prog  "FLUID" fluid fluid %F
prog  "Main Menu Editor" /opt/lxmed/lxmed.png lxmed
prog  "Htop" htop htop
prog  "The Porthole Portage Frontend" porthole-icon.png porthole
prog  "Opera developer New Window New Private Window" opera-developer opera-developer %U opera-developer --new-window opera-developer --privat
e
prog  "Thunar File Manager" Thunar thunar %F
prog  "GNU Image Manipulation Program" gimp gimp-2.8 %U
prog  "Baka-MPlayer" baka-mplayer baka-mplayer %u
prog  "UXTerm" xterm-color_48x48 uxterm
prog  "Logout" gnome-logout lxde-logout
prog  "PyCrust 3.0" PyCrust-3.0 pycrust-3.0
prog  "Pinta" pinta pinta %F
prog  "MIME Type Editor" application-x-executable xfce4-mime-settings
prog  "Window Manager" xfwm4 xfwm4-settings
prog  "Notification Daemon"  /usr/libexec/notification-daemon
prog  "RSS Guard" rssguard rssguard
prog  "AbiWord" abiword abiword %U
prog  "Elementary Test" elementary elementary_test
prog  "LibreOffice XSLT based filters"  libreoffice %F
prog  "Inkscape New Drawing" inkscape inkscape %F inkscape
prog  "File Manager PCManFM" system-file-manager pcmanfm %U
prog  "Settings Editor" preferences-system xfce4-settings-editor
prog  "Log Out" system-log-out xfce4-session-logout
prog  "Preferred Applications" preferences-desktop-default-applications exo-preferred-applications
prog  "Where am I" mark-location-symbolic /usr/libexec/geoclue-2.0/demos/where-am-i
prog  "PDF-Shuffler" pdfshuffler pdfshuffler
prog  "LibreOffice Impress New Presentation" libreoffice-impress libreoffice --impress %F libreoffice --impress
prog  "Create Launcher on the panel" application-x-executable xfce4-panel --add=launcher %u
prog  "LibreOffice Writer Calc Impress Draw Base Math" libreoffice-startcenter libreoffice %F libreoffice --writer libreoffice --calc libreoff
ice --impress libreoffice --draw libreoffice --base libreoffice --math
prog  "Terminator Open a New Window" terminator terminator terminator
prog  "LibreOffice Base New Database" libreoffice-base libreoffice --base %F libreoffice --base
prog  "DjView4" djvulibre-djview4 djview4 %f
prog  "Alsa Mixer GUI" alsamixergui alsamixergui
prog  "Settings Manager" preferences-desktop xfce4-settings-manager
prog  "FBReader" FBReader FBReader %F
prog  "Enqueue in SMPlayer" smplayer smplayer -add-to-playlist %U
prog  "VLC media player" vlc /usr/bin/vlc --started-from-file %U
prog  "Wammu" wammu wammu
prog  "Qt Configuration Tool" qtconfig qtconfig
prog  "Monitor Settings" display lxrandr
prog  "Mousepad" accessories-text-editor mousepad %F
prog  "Mozilla Firefox bin" firefox-bin /usr/bin/firefox-bin %u
prog  "Keyboard and Mouse" input-keyboard lxinput
prog  "Elementary Configuration" elementary elementary_config
prog  "SASM" /usr/share/sasm/sasm.png sasm
prog  "Zim Desktop Wiki Quick Note Quick Note from Clipboard" zim zim %f zim --plugin quicknote zim --plugin quicknote input=clipboard
prog  "Bonobo Component Browser"  bonobo-browser
prog  "Window Manager Tweaks" wmtweaks xfwm4-tweaks-settings
prog  "Master PDF Editor 4" /opt/master-pdf-editor-4/masterpdfeditor4.png /opt/master-pdf-editor-4/masterpdfeditor4 %f
prog  "XRCed 3.0" XRCed-3.0 xrced-3.0
prog  "mpv Media Player" mpv mpv --profile=pseudo-gui -- %U
prog  "Shortcut Editor" applications-other lxshortcut -i %f
prog  "Allegro Setup" allegro allegro-setup
prog  "Default applications for LXSession" xfwm4 lxsession-default-apps
prog  "LibreOffice Draw New Drawing" libreoffice-draw libreoffice --draw %F libreoffice --draw
prog  "Adobe Flash Player" flash-player-properties flash-player-properties
prog  "Emacsclient" emacs /usr/bin/emacsclient %F
prog  "Application Finder" gtk-find xfce4-appfinder
prog  "Image Viewer" eog eog %U
prog  "About Xfce" help-about xfce4-about
prog  "Accessibility" preferences-desktop-accessibility xfce4-accessibility-settings
prog  "Leafpad" leafpad leafpad %f
prog  "GParted" gparted gparted-pkexec
prog  "Qt5 Settings" preferences-desktop-theme qt5ct
prog  "LibreCAD" librecad librecad
prog  "Feh" feh feh %F
prog  "CherryTree" cherrytree cherrytree %f
prog  "Panel" xfce4-panel xfce4-panel --preferences
prog  "Manage Printing" cups /usr/bin/xdg-open [url]http://localhost:631[/url]
prog  "Session and Startup" xfce4-session xfce4-session-settings
prog  "Modem Manager GUI" modem-manager-gui modem-manager-gui
prog  "File Manager" system-file-manager exo-open --launch FileManager %u
prog  "XSane Scanner Tool" xsane xsane
prog  "Open Folder with Thunar" Thunar thunar %F
}


Как бы это оптимизировать, если возможно?
REM: Все проги из этого меню запускаются
Миниатюры
Извлечение из файлов и запись в новый  
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
25.04.2017, 07:06
Цитата Сообщение от Delvin-fil Посмотреть сообщение
Как бы это оптимизировать
а что именно не устраивает?
0
 Аватар для Delvin-fil
35 / 33 / 19
Регистрация: 22.01.2015
Сообщений: 215
25.04.2017, 07:23  [ТС]
Цитата Сообщение от Jabbson Посмотреть сообщение
а что именно не устраивает?
Ну, код какой то, даже и не знаю, как сказать...
Подравнял под 3.6
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/env python3.6
# -*- coding: utf-8 -*-
import re
import os
import glob
import sys
 
directory = '/usr/share/applications/'
files = os.listdir(directory)
 
with open('menu.test', 'w') as f_cl:
    clear = 'menu "TEST" - {'
    f_cl.write(clear)
 
 
def parse_file():
    for f in glob.glob(f'{directory}*.desktop'):
        with open(
                f, 'r', encoding="utf-8") as f_in, open('menu.test',
                                                        'a') as f_out:
            found = str(f_in.read())
            Name = re.findall('\nName=(.*\w+)', found)
            Icon = re.findall('\nIcon=(.*\w+)', found)
            Exec = re.findall('\nExec=(.*\w+)', found)
            menu = (f'prog "{str(Name)}" {Icon} {Exec}')
            menu = re.sub(r'\[|\(|\'|\]|\)|\,|\\', '', str(menu))
            f_out.write(f'{menu}\n')
 
 
def out_file():
    with open('menu.test', 'a') as f_fn:
        clear = '}\n'
        f_fn.write(clear)
 
 
#print (len(files))
if __name__ == '__main__':
    parse_file()
    out_file()


Там еще есть пункт "Categories=", "Name[ru]=" и даже "Name[ru_RU]", хочется реализовать так, как сделано в xdg-menu for archlinux (она на perl).

А еще непонятно, как оно сортирует.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.04.2017, 07:23
Помогаю со студенческими работами здесь

Извлечение текста и записи его в новый параграф. JQuery
Доброго времени суток! помогите решить задачку. Добавить сверху кнопку, а затем 6 параграфов с каким-либо текстом, один под другим. При...

Извлечение эскизов из файлов
Всем привет! Нужна помощь со следующим: необходимо извлечь эскиз из любого файла (excel, word, рисунок итд) и поместить его в PictureBox,...

Извлечение файлов из CAB
Как программно извлечение файл из CAB файла? Заранее благодарю.

Извлечение звуковых файлов
Приветствую! Есть необходимость извлечь из клиента старенькой игры Operation 7 звуковые файлы. При этом сами файлы вроде как нашел, но они...

Извлечение файлов из папок
На входе мы получаем путь к папке, мы должны вернуть путь ко всем файлам, лежащим в этой папке. Помогите пожалуйста, вообще не понимаю...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru