腳本06-01:批次頁首或頁尾插入分隔字元

建議檔名: 批次頁首或頁尾插入分隔字元.py


用法如下:
在【命令提示字元】執行程式碼:
F:\_自訂製書工具\批次插入分隔線>批次頁首或頁尾插入分隔字元.py

請輸入檔案所在資料夾的路徑(或輸入 'q' 以中止操作):G:\輸出資料夾

請輸入分隔符字元(如******):***

是否要在開頭插入分隔符?輸入 'Y' 以在開頭插入,直接按 Enter 跳過,或輸入 'q' 以中止操作:y

是否也要在結尾插入分隔符?輸入 'Y' 以在結尾插入,直接按 Enter 跳過,或輸入 'q' 以中止操作:y

處理檔案: G:\輸出資料夾\001_.txt

已在檔案 001_.txt 中插入分隔符

……

上例是以三個連續全形【***】米字號作為分隔,請隨意插入其他自選字串(如書名)


程式碼:
(複製以下文字,貼入純文字檔中,存檔後將副檔名設定為 .py)


import os


# 在指定位置插入分隔字元(如******)

def insert_separator(file_path, separator, at_start=False, at_end=False):

    with open(file_path, 'r', encoding='utf-8') as file:

        lines = file.readlines()


    # 如果是插入在結尾,則直接在最後加上分隔字元

    if at_end:

        lines.append(f"{separator}\n")

    

    # 如果是插入在第一行之前,則將分隔字元插入到開頭

    if at_start:

        lines.insert(0, f"{separator}\n")


    # 保存修改後的檔案

    with open(file_path, 'w', encoding='utf-8') as file:

        file.writelines(lines)


# 輸入檢查,確保用戶輸入有效字元

def get_valid_input(prompt):

    while True:

        user_input = input(prompt)

        if user_input.lower() == 'q':  # 用戶輸入 'q' 表示中止

            print("操作已中止。")

            exit()  # 終止程式執行

        return user_input


# 處理指定資料夾中的檔案

def process_files_in_folder(folder_path, separator, at_start=False, at_end=False):

    for filename in os.listdir(folder_path):

        if filename.endswith('.txt'):

            file_path = os.path.join(folder_path, filename)

            print(f"處理檔案: {file_path}")

            insert_separator(file_path, separator, at_start, at_end)

            print(f"已在檔案 {filename} 中插入分隔符")


if __name__ == "__main__":

    folder_path = input("請輸入檔案所在資料夾的路徑(或輸入 'q' 以中止操作):")

    if folder_path.lower() == 'q':

        print("操作已中止。")

        exit()  # 終止程式執行

    

    separator = get_valid_input("請輸入分隔符字元(如******):")

    

    # 確認是否需要在開頭插入分隔符

    add_to_start = input("是否要在開頭插入分隔符?輸入 'Y' 以在開頭插入,直接按 Enter 跳過,或輸入 'q' 以中止操作:")

    if add_to_start.lower() == 'q':

        print("操作已中止。")

        exit()

    

    # 確認是否需要在結尾插入分隔符

    add_to_end = input("是否也要在結尾插入分隔符?輸入 'Y' 以在結尾插入,直接按 Enter 跳過,或輸入 'q' 以中止操作:")

    if add_to_end.lower() == 'q':

        print("操作已中止。")

        exit()

    

    # 根據用戶的選擇來插入分隔符

    process_files_in_folder(folder_path, separator, at_start=(add_to_start.lower() == 'y'), at_end=(add_to_end.lower() == 'y'))


    print("操作完成!")