wxPython モジュールを使用して複数のテキスト ファイルを結合するためのブログ。これはブログの例です:
C:\pythoncode\blog\txtmerge.py
Python プログラミングでは、テキスト ファイルを扱う必要があることがよくあります。場合によっては、さらに処理または分析するために、複数のテキスト ファイルを 1 つのファイルに結合する必要がある場合があります。この記事では、wxPython モジュールを使用して、ユーザーが複数のテキスト ファイルを選択し、選択した順序で 1 つのファイルに結合できる簡単なプログラムを作成する方法を説明します。
準備
まず、wxPython モジュールをインストールする必要があります。次のコマンドを使用してインストールできます。
pip install wxPython
インストールが完了したら、プログラムの作成を開始できます。
プログラミング
wxPython モジュールを使用して、簡単な GUI プログラムを作成します。ユーザーはこのプログラムを通じて結合するテキスト ファイルを選択し、選択した順序に従って 1 つのファイルに結合できます。
プログラムのコードは次のとおりです。
import wx
import datetime
import os
class MergeApp(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title="文档合并工具", size=(400, 300))
self.panel = wx.Panel(self)
self.file_list = wx.ListBox(self.panel, style=wx.LB_MULTIPLE)
self.merge_button = wx.Button(self.panel, label="合并文档")
self.merge_button.Bind(wx.EVT_BUTTON, self.on_merge)
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.sizer.Add(self.file_list, 1, wx.EXPAND | wx.ALL, 10)
self.sizer.Add(self.merge_button, 0, wx.ALIGN_CENTER | wx.ALL, 10)
self.panel.SetSizer(self.sizer)
def on_merge(self, event):
selected_files = self.file_list.GetSelections()
if len(selected_files) < 2:
wx.MessageBox("请选择至少两个文档进行合并!", "错误", wx.OK | wx.ICON_ERROR)
return
merged_content = ""
for index in selected_files:
file_path = self.file_list.GetString(index)
with open(file_path, "r", encoding="utf-8") as file:
merged_content += file.read()
merge_datetime = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
merge_filename = f"merge_{
merge_datetime}.txt"
with open(merge_filename, "w", encoding="utf-8") as merged_file:
merged_file.write(merged_content)
wx.MessageBox(f"文档合并完成,合并文档保存为 {
merge_filename}!", "完成", wx.OK | wx.ICON_INFORMATION)
self.Close()
if __name__ == "__main__":
app = wx.App()
frame = MergeApp()
wildcard = "Text files (*.txt)|*.txt"
dialog = wx.FileDialog(None, message="请选择要合并的文档", wildcard=wildcard, style=wx.FD_OPEN | wx.FD_MULTIPLE)
if dialog.ShowModal() == wx.ID_OK:
file_paths = dialog.GetPaths()
frame.file_list.AppendItems(file_paths)
dialog.Destroy()
frame.Show()
app.MainLoop()
プログラムを実行する
上記のコードをmerge_app.py
ファイルとして保存します。次に、コマンド ラインで次のコマンドを実行してプログラムを開始します。
python merge_app.py
プログラムウィンドウが表示され、「参照」ボタンをクリックして結合するテキストファイルを選択できます。選択したファイルがリストボックスに表示されます。少なくとも 2 つのファイルを選択した後、「ドキュメントを結合」ボタンをクリックすると、プログラムは選択した順序に従ってファイルの内容を新しいテキスト ファイルに結合し、結合完了の情報をポップアップ メッセージに表示します。箱。
すべてのコード
import wx
import datetime
import os
class MergeApp(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title="文档合并工具", size=(400, 300))
self.panel = wx.Panel(self)
self.file_list = wx.ListBox(self.panel, style=wx.LB_MULTIPLE)
self.merge_button = wx.Button(self.panel, label="合并文档")
self.merge_button.Bind(wx.EVT_BUTTON, self.on_merge)
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.sizer.Add(self.file_list, 1, wx.EXPAND | wx.ALL, 10)
self.sizer.Add(self.merge_button, 0, wx.ALIGN_CENTER | wx.ALL, 10)
self.panel.SetSizer(self.sizer)
def on_merge(self, event):
selected_files = self.file_list.GetSelections()
if len(selected_files) < 2:
wx.MessageBox("请选择至少两个文档进行合并!", "错误", wx.OK | wx.ICON_ERROR)
return
merged_content = ""
for index in selected_files:
file_path = self.file_list.GetString(index)
with open(file_path, "r", encoding="utf-8") as file:
merged_content += file.read()
merge_datetime = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
merge_filename = f"merge_{
merge_datetime}.txt"
with open(merge_filename, "w", encoding="utf-8") as merged_file:
merged_file.write(merged_content)
wx.MessageBox(f"文档合并完成,合并文档保存为 {
merge_filename}!", "完成", wx.OK | wx.ICON_INFORMATION)
self.Close()
if __name__ == "__main__":
app = wx.App()
frame = MergeApp()
wildcard = "Text files (*.txt)|*.txt"
dialog = wx.FileDialog(None, message="请选择要合并的文档", wildcard=wildcard, style=wx.FD_OPEN | wx.FD_MULTIPLE)
if dialog.ShowModal() == wx.ID_OK:
file_paths = dialog.GetPaths()
frame.file_list.AppendItems(file_paths)
dialog.Destroy()
frame.Show()
app.MainLoop()
要約する
wxPython モジュールを使用して、複数のテキスト ファイルを簡単にマージする簡単なプログラムを作成しました。このプログラムは、ユーザーが簡単にファイルを選択してマージ操作を実行できる、使いやすいインターフェイスを提供します。より具体的な要件を満たすために、ニーズに応じてコードを変更および拡張できます。
このブログがお役に立てば幸いです! 他にご質問がございましたら、お気軽にお問い合わせください。