欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Python開發(fā)一個批量文本地址生成二維碼工具的詳細教程

 更新時間:2025年09月14日 12:00:22   作者:xcLeigh  
在日常工作與生活中,二維碼的應用場景越來越廣泛,無論是分享地址信息,還是用于活動簽到、物料宣傳等,都離不開它,如果需要為大量地址生成二維碼,手動制作不僅效率低下,還難以保證樣式統(tǒng)一,所以今天就帶大家用Python開發(fā)一個批量地址生成二維碼的小工具

引言

本文介紹了用 Python 開發(fā)批量地址生成二維碼工具的教程。工具支持高效批量處理多地址,可自定義二維碼顏色、尺寸、邊框,還能加 logo,輸出靈活。需安裝 qrcode、Pillow、pandas 等庫,分四步實現(xiàn):準備地址數(shù)據(jù)(代碼定義列表或 Excel 讀?。?、編寫生成單個二維碼的核心函數(shù)、實現(xiàn)批量生成邏輯、運行代碼查看效果。文中還給出樣式優(yōu)化技巧,如高對比度顏色搭配、合適尺寸選擇,解答了常見問題,并提供工具擴展建議,能有效提升生成二維碼的效率與美觀度,適合有批量生成需求的用戶學習使用。

在日常工作與生活中,二維碼的應用場景越來越廣泛,無論是分享地址信息,還是用于活動簽到、物料宣傳等,都離不開它。如果需要為大量地址生成二維碼,手動制作不僅效率低下,還難以保證樣式統(tǒng)一。今天就帶大家用 Python 開發(fā)一個批量地址生成二維碼的小工具,只需幾行代碼,就能快速生成美觀、規(guī)范的二維碼,還能自定義樣式哦!

一、工具核心價值與所需庫

1. 工具核心價值

  • 高效批量處理:支持一次性導入多個地址(如 Excel 表格中的幾十上百個文本或URL地址),自動生成對應二維碼,告別重復手動操作。
  • 樣式高度自定義:可自由設置二維碼的顏色(前景色、背景色)、尺寸、邊框大小,還能添加 logo 圖標,讓二維碼更具辨識度。
  • 輸出靈活可控:生成的二維碼可保存為 PNG/JPG 等常見格式,且能自定義保存路徑,方便后續(xù)整理與使用。

2. 必備 Python 庫

實現(xiàn)這個工具需要用到 3 個核心庫,各自的作用如下:

  • qrcode:核心二維碼生成庫,支持生成標準二維碼,并提供豐富的樣式配置參數(shù)。
  • Pillow(PIL):Python 圖像處理庫,用于給二維碼添加 logo、調整圖像尺寸等操作。
  • pandas:用于讀取 Excel/CSV 文件中的地址數(shù)據(jù),實現(xiàn)批量數(shù)據(jù)導入(如果地址較少,也可直接用列表存儲,此庫可選)。

如果你的環(huán)境中還沒有安裝這些庫,可通過以下命令一鍵安裝:

pip install qrcode pillow pandas openpyxl

(注:openpyxl是 pandas 讀取 Excel 文件的依賴庫,需一并安裝)

二、實戰(zhàn)步驟:從 0 到 1 實現(xiàn)批量生成

接下來我們分 4 個步驟實現(xiàn)工具開發(fā),從環(huán)境準備到代碼運行,每一步都有詳細說明,新手也能輕松跟上。

步驟 1:準備地址數(shù)據(jù)

有兩種方式可以提供地址數(shù)據(jù),大家可根據(jù)實際需求選擇:

方式 1:直接在代碼中定義地址列表(適合少量地址)

如果只需生成 10 個以內的二維碼,可直接在代碼里寫一個列表,示例如下:

# 地址列表

address_list = [
   "北京市朝陽區(qū)建國路88號現(xiàn)代城A座1501室",
   "上海市浦東新區(qū)張江高科技園區(qū)博云路2號浦軟大廈10層",
   "廣州市天河區(qū)珠江新城冼村路5號凱華國際中心28樓",
   "深圳市南山區(qū)科技園科苑路8號訊美科技廣場3棟20層"
]

方式 2:從 Excel 文件讀取地址(適合大量地址)

如果有幾十上百個地址(我這里是模板為了方便 ,就放了幾個地址),建議整理成 Excel 文件(格式如下),通過 pandas 讀取,更高效且不易出錯。

Excel 文件格式(命名為addresses.xlsx,放在代碼同一目錄):

序號地址備注
1https://xcleigh.blog.csdn.net/article/details/149752927xcLeigh
2https://xcleigh.blog.csdn.net/article/details/149452966電科金倉
3https://xcleigh.blog.csdn.net/article/details/146366578ToDesk

讀取 Excel 數(shù)據(jù)的代碼:

import pandas as pd

# 讀取Excel文件,獲取"地址"列的數(shù)據(jù)

df = pd.read_excel("addresses.xlsx", engine="openpyxl")

# 將地址列轉換為列表(確保無空值)

address_list = df["地址"].dropna().tolist()

步驟 2:編寫二維碼生成核心函數(shù)

我們先封裝一個generate_qrcode函數(shù),實現(xiàn) “單個地址生成二維碼” 的功能,包含樣式自定義參數(shù):

import qrcode
from PIL import Image
import os

def generate_qrcode(address, save_path,

                  qr_color="black", bg_color="white",

                  qr_size=10, border=2, logo_path=None):

   """

   生成單個地址的二維碼


   參數(shù)說明:

   address: str - 要生成二維碼的地址

   save_path: str - 二維碼保存路徑(含文件名,如"qrcodes/address1.png")

   qr_color: str - 二維碼前景色(默認黑色,支持英文/十六進制,如"#2E86AB")

   bg_color: str - 二維碼背景色(默認白色)

   qr_size: int - 二維碼尺寸(默認10,值越大二維碼越清晰)

   border: int - 二維碼邊框寬度(默認2,單位為二維碼格子)

   logo_path: str - logo圖片路徑(可選,如"logo.png",建議用正方形圖片)

   """

   # 1. 配置二維碼基本參數(shù)

   qr = qrcode.QRCode(

       version=1,  # 二維碼版本(1-40,版本越高越復雜)

       error_correction=qrcode.constants.ERROR_CORRECT_H,  # 容錯等級(H最高,可覆蓋30%區(qū)域)

       box_size=qr_size,  # 每個格子的像素大小

       border=border,  # 邊框寬度

   )

  

   # 2. 添加地址數(shù)據(jù)并生成二維碼

   qr.add_data(address)

   qr.make(fit=True)  # 自動適配版本

  

   # 3. 自定義顏色并生成圖像

   qr_img = qr.make_image(fill_color=qr_color, back_color=bg_color).convert("RGB")

  

   # 4. (可選)添加logo

   if logo_path and os.path.exists(logo_path):

       logo = Image.open(logo_path)

       # 計算logo尺寸(建議為二維碼的1/5,避免遮擋信息)

       logo_size = int(qr_img.size[0] / 5)

       logo = logo.resize((logo_size, logo_size), Image.Resampling.LANCZOS)  # 保持清晰度

       # 計算logo位置(居中)

       logo_pos = (

           int((qr_img.size[0] - logo_size) / 2),

           int((qr_img.size[1] - logo_size) / 2)

       )

       # 將logo粘貼到二維碼上

       qr_img.paste(logo, logo_pos)

  

   # 5. 保存二維碼(確保保存目錄存在)

   os.makedirs(os.path.dirname(save_path), exist_ok=True)

   qr_img.save(save_path)

   print(f"成功生成:{save_path}")

步驟 3:實現(xiàn)批量生成邏輯

調用上面的generate_qrcode函數(shù),循環(huán)處理address_list中的所有地址,實現(xiàn)批量生成:

def batch_generate_qrcodes(address_list,
                         base_save_dir="address_qrcodes",
                         qr_color="#0066CC", bg_color="white",
                         qr_size=10, border=2, logo_path=None):

   """
   批量生成地址二維碼
   參數(shù)說明:
   address_list: list - 地址列表
   base_save_dir: str - 基礎保存目錄(默認"address_qrcodes")
   其他參數(shù):同generate_qrcode函數(shù)
   """
   for i, address in enumerate(address_list, start=1):
       # 生成保存文件名(避免中文亂碼,用序號+簡短描述)
       short_name = f"地址_{i}_{address[:8]}...".replace("/", "_").replace("\\\\", "_")
       save_path = os.path.join(base_save_dir, f"{short_name}.png")
       # 生成單個二維碼
       generate_qrcode(
           address=address,
           save_path=save_path,
           qr_color=qr_color,
           bg_color=bg_color,
           qr_size=qr_size,
           border=border,
           logo_path=logo_path

       )

   print(f"\n批量生成完成!共生成{len(address_list)}個二維碼,保存路徑:{os.path.abspath(base_save_dir)}")

# ------------------- 調用批量生成函數(shù) -------------------

if __name__ == "__main__":
   # 1. 準備地址列表(二選一)
   # 方式1:直接定義列表
   # address_list = [
   #     "北京市朝陽區(qū)建國路88號現(xiàn)代城A座1501室",
   #     "上海市浦東新區(qū)張江高科技園區(qū)博云路2號"
   # ]

   # 方式2:從Excel讀取
   df = pd.read_excel("addresses.xlsx", engine="openpyxl")
   address_list = df["地址"].dropna().tolist()

   # 2. 批量生成(可根據(jù)需求調整參數(shù))
   batch_generate_qrcodes(
       address_list=address_list,
       base_save_dir="my_address_qrcodes",  # 自定義保存目錄
       qr_color="#2E8B57",  # 海綠色前景色
       bg_color="#F5F5F5",  # 淺灰色背景色
       qr_size=12,  # 增大尺寸,更清晰
       border=1,  # 減小邊框
       logo_path="my_logo.png"  # 可選:添加自己的logo(需放在代碼目錄)
   )

步驟 4:運行代碼并查看效果

  1. 準備工作:如果用 Excel 讀取地址,確保addresses.xlsx文件正確;如果加 logo,準備一張正方形的 logo 圖片(如my_logo.png)。
  2. 運行代碼:直接執(zhí)行 Python 腳本,控制臺會輸出每個二維碼的生成進度。
  3. 查看結果:代碼運行完成后,會在當前目錄生成my_address_qrcodes文件夾,里面存放著所有生成的二維碼,每個文件命名格式為 “地址_序號_地址前 8 字…png”,方便識別。

三、效果展示與樣式優(yōu)化技巧

1. 基礎效果(無 logo)

生成的二維碼清晰可掃,前景色為海綠色(#2E8B57),背景色為淺灰色(#F5F5F5),邊框窄,整體簡潔大方,掃碼后可直接跳轉查看地址(或復制地址)。

2. 帶 logo 效果

如果添加了 logo(如公司 logo),logo 會居中顯示在二維碼上,且由于我們設置了高容錯等級(ERROR_CORRECT_H),即使 logo 遮擋部分區(qū)域,也不影響掃碼識別。

3. 樣式優(yōu)化技巧

顏色搭配:建議選擇對比度高的顏色組合(如深色前景 + 淺色背景),避免淺色前景 + 深色背景(掃碼識別率低)。推薦組合:

  • 商務風:#003366(深藍)+ #FFFFFF(白)
  • 活力風:#FF6600(橙)+ #F8F8F8(淺灰)

尺寸選擇:如果用于打印(如海報、物料),qr_size建議設為 15-20;如果用于電子屏幕(如微信分享),設為 10-12 即可。

logo 處理:logo 圖片建議用透明背景的 PNG 格式,尺寸不超過二維碼的 1/5,避免遮擋關鍵信息。

四、完整代碼和運行效果

先在python同級目錄下創(chuàng)建上面說的 excel文件 ,然后下面代碼直接放到python文件里面可以運行 。

import qrcode
from PIL import Image
import os
import pandas as pd

# # 地址列表-方式1
# address_list = [
#    "北京市朝陽區(qū)建國路88號現(xiàn)代城A座1501室",
#    "上海市浦東新區(qū)張江高科技園區(qū)博云路2號浦軟大廈10層",
#    "廣州市天河區(qū)珠江新城冼村路5號凱華國際中心28樓",
#    "深圳市南山區(qū)科技園科苑路8號訊美科技廣場3棟20層"
# ]

# 地址列表-方式2
# 讀取Excel文件,獲取"地址"列的數(shù)據(jù)
df = pd.read_excel("addresses.xlsx", engine="openpyxl")
# 將地址列轉換為列表(確保無空值)
address_list = df["地址"].dropna().tolist()

def generate_qrcode(address, save_path,
                    qr_color="black", bg_color="white",
                    qr_size=10, border=2, logo_path=None):
    """
    生成單個地址的二維碼

    參數(shù)說明:
    address: str - 要生成二維碼的地址
    save_path: str - 二維碼保存路徑(含文件名,如"qrcodes/address1.png")
    qr_color: str - 二維碼前景色(默認黑色,支持英文/十六進制,如"#2E86AB")
    bg_color: str - 二維碼背景色(默認白色)
    qr_size: int - 二維碼尺寸(默認10,值越大二維碼越清晰)
    border: int - 二維碼邊框寬度(默認2,單位為二維碼格子)
    logo_path: str - logo圖片路徑(可選,如"logo.png",建議用正方形圖片)
    """
    # 1. 配置二維碼基本參數(shù)
    qr = qrcode.QRCode(
        version=1,  # 二維碼版本(1-40,版本越高越復雜)
        error_correction=qrcode.constants.ERROR_CORRECT_H,  # 容錯等級(H最高,可覆蓋30%區(qū)域)
        box_size=qr_size,  # 每個格子的像素大小
        border=border,  # 邊框寬度
    )

    # 2. 添加地址數(shù)據(jù)并生成二維碼
    qr.add_data(address)
    qr.make(fit=True)  # 自動適配版本

    # 3. 自定義顏色并生成圖像
    qr_img = qr.make_image(fill_color=qr_color, back_color=bg_color).convert("RGB")

    # 4. (可選)添加logo
    if logo_path and os.path.exists(logo_path):
        logo = Image.open(logo_path)
        # 計算logo尺寸(建議為二維碼的1/5,避免遮擋信息)
        logo_size = int(qr_img.size[0] / 5)
        logo = logo.resize((logo_size, logo_size), Image.Resampling.LANCZOS)  # 保持清晰度
        # 計算logo位置(居中)
        logo_pos = (
            int((qr_img.size[0] - logo_size) / 2),
            int((qr_img.size[1] - logo_size) / 2)
        )
        # 將logo粘貼到二維碼上
        qr_img.paste(logo, logo_pos)

    # 5. 保存二維碼(確保保存目錄存在)
    os.makedirs(os.path.dirname(save_path), exist_ok=True)
    qr_img.save(save_path)
    print(f"成功生成:{save_path}")

def batch_generate_qrcodes(address_list,
                           base_save_dir="address_qrcodes",
                           qr_color="#0066CC", bg_color="white",
                           qr_size=10, border=2, logo_path=None):
    """
    批量生成地址二維碼

    參數(shù)說明:
    address_list: list - 地址列表
    base_save_dir: str - 基礎保存目錄(默認"address_qrcodes")
    其他參數(shù):同generate_qrcode函數(shù)
    """
    for i, address in enumerate(address_list, start=1):
        # 生成保存文件名(避免中文亂碼,用序號+簡短描述)
        short_name = f"地址_{i}_{address[:8]}...".replace("/", "_").replace("\\", "_")
        save_path = os.path.join(base_save_dir, f"{short_name}.png")
        # 生成單個二維碼
        generate_qrcode(
            address=address,
            save_path=save_path,
            qr_color=qr_color,
            bg_color=bg_color,
            qr_size=qr_size,
            border=border,
            logo_path=logo_path
        )
    print(f"\n批量生成完成!共生成{len(address_list)}個二維碼,保存路徑:{os.path.abspath(base_save_dir)}")


# ------------------- 調用批量生成函數(shù) -------------------
if __name__ == "__main__":
    # 1. 準備地址列表(二選一)
    # 方式1:直接定義列表
    # address_list = [
    #     "北京市朝陽區(qū)建國路88號現(xiàn)代城A座1501室",
    #     "上海市浦東新區(qū)張江高科技園區(qū)博云路2號"
    # ]
    # 方式2:從Excel讀取
    df = pd.read_excel("addresses.xlsx", engine="openpyxl")
    address_list = df["地址"].dropna().tolist()

    # 2. 批量生成(可根據(jù)需求調整參數(shù))
    batch_generate_qrcodes(
        address_list=address_list,
        base_save_dir="my_address_qrcodes",  # 自定義保存目錄
        qr_color="#2E8B57",  # 海綠色前景色
        bg_color="#F5F5F5",  # 淺灰色背景色
        qr_size=12,  # 增大尺寸,更清晰
        border=1,  # 減小邊框
        logo_path="my_logo.png"  # 可選:添加自己的logo(需放在代碼目錄)
    )

運行效果:

二維碼 就不放了,系統(tǒng)審核不通過!快去動手打造自己的二維碼吧!

五、常見問題與解決方案

問題 1:運行代碼時提示 “No module named ‘openpyxl’”

解決方案:安裝 openpyxl 依賴庫,執(zhí)行命令pip install openpyxl。

問題 2:生成的二維碼掃碼后無法識別

可能原因:

  • logo 尺寸過大,遮擋過多區(qū)域 → 減小 logo 尺寸(如設為二維碼的 1/6)。
  • 顏色對比度太低 → 更換對比度高的顏色組合。
  • 地址內容過長 → 可將地址轉換為短鏈接(如用 tinyurl),再生成二維碼。

問題 3:Excel 文件讀取時提示 “FileNotFoundError”

解決方案:確保 Excel 文件(addresses.xlsx)與 Python 腳本在同一目錄,或在代碼中寫全文件路徑(如"C:/data/addresses.xlsx")。

六、工具擴展建議

這個小工具還可以進一步擴展,滿足更多需求:

  1. 添加二維碼批量導出到 Excel:將生成的二維碼路徑(或 Base64 編碼)寫入 Excel,方便管理。
  2. 支持自定義二維碼內容格式:如在地址前添加 “地址:” 前綴,或拼接聯(lián)系電話,示例:f"地址:{address}\n聯(lián)系電話:13800138000"。
  3. 生成帶文字說明的二維碼圖片:用 Pillow 在二維碼下方添加地址文字,方便肉眼識別。

如果大家有擴展需求,可以在評論區(qū)留言,后續(xù)會繼續(xù)分享優(yōu)化方案!

通過以上步驟,相信你已經掌握了用 Python 批量生成地址二維碼的方法。這個工具不僅能提高工作效率,還能通過自定義樣式讓二維碼更具特色,趕緊動手試試吧!

以上就是使用Python開發(fā)一個批量文本地址生成二維碼工具的詳細教程的詳細內容,更多關于Python批量文本地址生成二維碼的資料請關注腳本之家其它相關文章!

相關文章

  • python編程嵌套函數(shù)實例代碼

    python編程嵌套函數(shù)實例代碼

    這篇文章主要介紹了python編程嵌套函數(shù)實例代碼,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Python中Flask模板的使用與高級技巧詳解

    Python中Flask模板的使用與高級技巧詳解

    在Web開發(fā)中,直接將HTML代碼寫在Python文件中會導致諸多問題,Flask內置了Jinja2模板引擎,完美解決了這些問題,下面我們就來看看Flask模板的具體應用吧
    2025-05-05
  • python函數(shù)裝飾器構造和參數(shù)傳遞

    python函數(shù)裝飾器構造和參數(shù)傳遞

    這篇文章主要介紹了python函數(shù)裝飾器構造和參數(shù)傳遞,下面通過一個小案例來簡單的理解什么是裝飾器,需要的小伙伴可以參考一下
    2022-03-03
  • Jupyter中直接顯示Matplotlib的圖形方法

    Jupyter中直接顯示Matplotlib的圖形方法

    今天小編就為大家分享一篇Jupyter中直接顯示Matplotlib的圖形方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 淺談python import引入不同路徑下的模塊

    淺談python import引入不同路徑下的模塊

    下面小編就為大家?guī)硪黄獪\談python import引入不同路徑下的模塊。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Python單元測試入門到精通講解

    Python單元測試入門到精通講解

    單元測試是軟件開發(fā)中不可或缺的一部分,有助于確保代碼的正確性、可維護性和可擴展性,在Python中,有豐富的工具和庫可用于進行單元測試,本文將為你提供一個全面的指南,從入門到精通,輕松掌握Python單元測試的方方面面
    2023-11-11
  • pandas添加行的兩種實現(xiàn)方式

    pandas添加行的兩種實現(xiàn)方式

    本文主要介紹了pandas添加行的兩種實現(xiàn)方式,主要是df.append()和df.concat()兩種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-06-06
  • 利用python腳本提取Abaqus場輸出數(shù)據(jù)的代碼

    利用python腳本提取Abaqus場輸出數(shù)據(jù)的代碼

    這篇文章主要介紹了利用python腳本提取Abaqus場輸出數(shù)據(jù),利用python腳本對Abaqus進行數(shù)據(jù)提取時,要對python腳本做前步的導入處理,本文通過實例代碼詳細講解需要的朋友可以參考下
    2022-11-11
  • python代碼實現(xiàn)學生信息管理系統(tǒng)

    python代碼實現(xiàn)學生信息管理系統(tǒng)

    這篇文章主要為大家詳細介紹了python代碼實現(xiàn)學生信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Python使用pyaudio實現(xiàn)錄音功能

    Python使用pyaudio實現(xiàn)錄音功能

    pyaudio是一個跨平臺的音頻I/O庫,使用PyAudio可以在Python程序中播放和錄制音頻,本文將利用它實現(xiàn)錄音功能,并做到停止說話時自動結束
    2023-05-05

最新評論