You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python如何一次性输入多文件路径并添加至列表以完成多文件压缩

嘿,刚接触Python就能动手写文件压缩工具,挺厉害的!针对你想一次性输入所有文件路径的需求,这里有几个简单好用的方法,你可以根据自己的场景选:

方法1:让用户用分隔符一次性输入路径

你可以引导用户用**空格(或者逗号)**分隔多个文件路径,然后用Python的split()方法把输入的字符串拆成列表。如果你的文件路径里包含空格(比如Windows里的C:\My Documents\file.txt),那用逗号分隔会更稳妥。

示例代码:

import zipfile
import os

# 让用户输入路径,用逗号分隔(适合路径含空格的场景)
input_str = input("请输入需要压缩的文件路径,用逗号分隔:")
file_list = [path.strip() for path in input_str.split(',')]  # 去除每个路径前后的空格

# 先验证路径是否存在,避免出错
valid_files = []
for path in file_list:
    if os.path.exists(path):
        valid_files.append(path)
    else:
        print(f"⚠️ 警告:路径 {path} 不存在,已跳过")

# 开始压缩
with zipfile.ZipFile("backup.zip", "w", zipfile.ZIP_DEFLATED) as zipf:
    for file in valid_files:
        # 第二个参数是压缩后文件的名称,用os.path.basename只保留文件名,不存完整路径
        zipf.write(file, os.path.basename(file))

print("✅ 压缩完成啦!")

方法2:通过命令行参数传递路径

如果想让工具更“专业”一点,可以用sys模块读取命令行参数。用户运行脚本时直接在后面跟上所有文件路径就行,比如:python zip_tool.py C:\Users\AAA\BBB C:\Users\AAA\CCC

示例代码:

import zipfile
import os
import sys

# sys.argv[0]是脚本本身的路径,后面的元素就是用户传入的文件路径
file_list = sys.argv[1:]

if not file_list:
    print("❌ 请在命令行后添加需要压缩的文件路径,比如:python zip_tool.py 路径1 路径2")
    sys.exit()

# 验证路径有效性
valid_files = [p for p in file_list if os.path.exists(p)]
invalid_files = [p for p in file_list if not os.path.exists(p)]

if invalid_files:
    print(f"⚠️ 以下路径不存在,已跳过:{', '.join(invalid_files)}")

# 压缩文件
with zipfile.ZipFile("backup.zip", "w", zipfile.ZIP_DEFLATED) as zipf:
    for file in valid_files:
        zipf.write(file, os.path.basename(file))

print("✅ 压缩完成!")

方法3:用图形界面选文件(最直观)

如果不想让用户手动敲路径,用Python自带的tkinter做一个简单的文件选择对话框,用户可以一次性选多个文件,完全不用记路径,对新手特别友好。

示例代码:

import zipfile
import os
import tkinter as tk
from tkinter import filedialog

# 初始化tkinter,隐藏主窗口
root = tk.Tk()
root.withdraw()

# 弹出文件选择框,允许选多个文件
file_list = filedialog.askopenfilenames(title="请选择需要压缩的文件")

if not file_list:
    print("❌ 没有选择任何文件,程序退出")
    exit()

# 开始压缩
with zipfile.ZipFile("backup.zip", "w", zipfile.ZIP_DEFLATED) as zipf:
    for file in file_list:
        zipf.write(file, os.path.basename(file))

print("✅ 压缩完成!")

小提醒

如果用户输入的Windows路径里有反斜杠,不用特意转义——input()读取的原始输入会自动处理成普通字符串,直接用就行。要是路径里有空格,用方法1的逗号分隔或者方法3的图形界面是最稳妥的。

内容的提问来源于stack exchange,提问作者Imola

火山引擎 最新活动