python3.3 遍历文件夹及文件 小例

本文介绍如何利用Python中的os模块之os.walk函数来遍历指定目录下的所有子目录及文件。通过两个实例,分别展示了如何获取所有的目录名及其对应的父目录路径,以及如何获取所有文件的全路径。
部署运行你感兴趣的模型镜像
import os
import os.path

# this folder is custom
rootdir="D:/360Downloads/testFile1"
for parent,dirnames,filenames in os.walk(rootdir):
	#case 1:
	for dirname in dirnames:
		print("parent folder is:" + parent)
		print("dirname is:" + dirname)
	#case 2
	for filename in filenames:	
		print("parent folder is:" + parent)
		print("filename with full path:"+ os.path.join(parent,filename))
		


* os.walk返回一个三元组.其中dirnames是所有文件夹名字(不包含路径),filenames是所有文件的名字(不包含路径).parent表示父目录.  

* case1 演示了如何遍历所有目录.  

* case2 演示了如何遍历所有文件.
* os.path.join(dirname,filename) : 将形如"/a/b/c"和"d.java"变成/a/b/c/d.java". ''' 


效果图:


您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>嗯,用户问的是如何用Python的zipfile模块自动压缩文件夹。我需要先看看用户提供的引用内容。引用3有一个示代码,看起来是可行的。用户提到之前遇到错误,可能是路径问题或者权限问题,但根据引用3的代码,正确的方法应该是用os.walk遍历文件夹,然后逐个添加文件到zip中。 首先,我需要确保用户正确指定了文件夹路径和输出路径。比如,路径中的斜杠是否正确,是否存在转义字符的问题。比如在Windows中,路径通常用双反斜杠或者原始字符串。用户之前的错误是文件未找到,可能因为路径不存在或者权限不足。 然后,代码示需要展示如何递归添加所有子文件夹文件。引用3中的zip_folder函数使用os.walk,这样可以处理所有层级的文件目录。同时,使用相对路径来保持压缩包内的目录结构正确。 另外,用户可能需要了解不同压缩模式,比如ZIP_DEFLATED和ZIP_STORED的区别,以及如何选择。需要提醒他们确保目标目录存在,否则会抛出异常。还要注意关闭ZipFile对象,使用with语句可以自动处理,避免资源泄露。 可能用户之前尝试用&#39;w&#39;模式创建zip文件,但如果输出路径的目录不存在,也会报错。所以代码中需要确保输出路径的父目录存在,或者用户有权限写入该位置。 最后,生成相关问题时要围绕常见的痛点,比如处理空文件夹、排除特定文件、压缩率调整等。这些扩展问题能帮助用户更深入使用zipfile模块。</think>### Python使用zipfile模块自动压缩文件夹方法 根据引用[3]提供的标准解决方案,结合Python官方文档推荐方式,以下是实现自动压缩文件夹的完整代码和操作步骤: #### 一、核心代码实现 ```python import os import zipfile def auto_zip_folder(source_dir, output_zip): """ 自动压缩整个文件夹(包含子目录) 参数说明: source_dir -- 需要压缩的源文件夹路径(如:r"D:\\documents\\project") output_zip -- 生成的ZIP文件路径(如:r"C:\\backup\\project.zip") """ with zipfile.ZipFile(output_zip, &#39;w&#39;, zipfile.ZIP_DEFLATED) as zipf: for root, dirs, files in os.walk(source_dir): for file in files: file_path = os.path.join(root, file) # 转换为相对于源目录的相对路径 arcname = os.path.relpath(file_path, source_dir) zipf.write(file_path, arcname) print(f"已添加:{arcname}") ``` #### 二、使用示 ```python # 指定要压缩的文件夹(使用原始字符串避免转义问题) source_folder = r"P:\\2018\\Archive\\CO_007_II" # 指定输出路径 output_file = r"P:\\2018\\Archive\\CO_007_II.zip" auto_zip_folder(source_folder, output_file) print("压缩完成!") ``` #### 三、关键注意事项 1. **路径处理**: - 使用原始字符串(`r""`)避免反斜杠转义问题 - 确保输出目录存在(代码不会自动创建父目录) - 路径示:`r"P:\\2018\\Archive\\"`(Windows)或`"/var/data/"`(Linux/Mac) 2. **压缩模式选择**: ```python zipfile.ZIP_STORED # 仅存储(无压缩) zipfile.ZIP_DEFLATED # ZIP压缩算法(默认) zipfile.ZIP_BZIP2 # BZIP2压缩(需Python 3.3+) zipfile.ZIP_LZMA # LZMA压缩(需Python 3.3+) ``` 3. **异常处理建议**: ```python try: auto_zip_folder(source_folder, output_file) except FileNotFoundError as e: print(f"路径错误:{e}") except PermissionError as e: print(f"权限不足:{e}") except Exception as e: print(f"未知错误:{e}") ``` #### 四、常见问题解决方案 1. **文件不存在错误**: - 检查源文件夹路径是否正确(建议使用`os.path.exists(source_folder)`验证) - 确保有写入目标目录的权限 2. **空文件夹压缩**: ```python # 添加空目录处理(需在write循环后添加) for dir in dirs: dir_path = os.path.join(root, dir) if not os.listdir(dir_path): # 判断是否为空目录 zipf.write(dir_path, os.path.relpath(dir_path, source_dir)) ``` 3. **压缩进度监控**: ```python from tqdm import tqdm # 需要安装tqdm库 def auto_zip_folder(source_dir, output_zip): total_files = sum([len(files) for _, _, files in os.walk(source_dir)]) with zipfile.ZipFile(output_zip, &#39;w&#39;, zipfile.ZIP_DEFLATED) as zipf, \ tqdm(total=total_files, unit=&#39;file&#39;) as pbar: for root, dirs, files in os.walk(source_dir): for file in files: # ...原有代码... pbar.update(1) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值