首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Linux Shell 腳本批量修改並運行 100 個 Python 文件

     編輯:程式設計疑難解答

需求

100 個同名不同內容的 Python 腳本,需將列表 a = ["name1", ... "name100"] 中的名字分別替換進每個文件的 if name == "" 行,然後運行並保存輸出。

Shell 腳本實現

#!/bin/bash
# 名字列表,用冒號分隔
names="name1:name2:name3:...:name100"

# 遍歷當前目錄所有 .py 文件
n=1
for file in *.py; do
    # 提取第 n 個名字
    name=$(echo "$names" | cut -d: -f$n)
    
    # 替換文件中的目標行
    sed -i "s/if name == \"\"/if name == \"$name\"/" "$file"
    
    # 運行並重定向輸出
    python3 "$file" > "${file%.py}.txt"
    
    ((n++))
done

關鍵點說明

  • cut -d: -f$n:按冒號分割取第 n 字段
  • sed -i:原地修改文件
  • ${file%.py}.txt:參數展開去除 .py 後綴加 .txt
  • 假設 .py 文件按字典序與名字列表順序對應

Python 替代方案(更健壯)

import glob, subprocess

names = ["name1", "name2", ...]  # 100 個名字
py_files = sorted(glob.glob("*.py"))

for i, (name, py_file) in enumerate(zip(names, py_files)):
    with open(py_file, 'r') as f:
        content = f.read()
    content = content.replace('if name == ""', f'if name == "{name}"')
    with open(py_file, 'w') as f:
        f.write(content)
    # 運行
    with open(f"{py_file}.txt", 'w') as out:
        subprocess.run(['python3', py_file], stdout=out)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved