python 合并文件夹中的txt文件 遍历所有文件 合并后的文件小于20MB 大于20MB另起一个文件
时间: 2023-09-03 07:07:27 浏览: 61
好的,我来回答你的问题。
可以使用Python中的os和shutil模块来遍历文件夹中的文件并进行合并。具体的步骤如下:
1. 使用os模块中的walk函数遍历文件夹中的所有文件,获取每个txt文件的路径。
2. 创建一个新的txt文件,用于存储合并后的内容。
3. 遍历每个txt文件,使用shutil模块中的copyfileobj函数将其内容复制到新的txt文件中。
4. 每次复制前,检查新的txt文件的大小是否超过了20MB。如果超过了,就创建一个新的txt文件,用于存储剩下的内容。并将新的文件的名称编号加1,以示区别。
下面是一份示例代码,你可以根据自己的需要进行修改:
```python
import os
import shutil
folder_path = "your_folder_path" # 文件夹路径
output_file = "merged_file.txt" # 合并后的文件名
max_size = 20 * 1024 * 1024 # 最大文件大小(20MB)
with open(output_file, "wb") as out:
file_count = 1
size = 0
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.endswith(".txt"):
file_path = os.path.join(root, file)
with open(file_path, "rb") as f:
shutil.copyfileobj(f, out)
size += os.path.getsize(file_path)
if size > max_size:
out.close()
output_file = f"merged_file_{file_count}.txt"
file_count += 1
with open(output_file, "wb") as out:
size = 0
```
代码解释:
- `with open(output_file, "wb") as out:`:打开一个新的文件,用于存储合并后的内容。这里使用了`with`语句,可以确保文件在使用完毕后被正确关闭。
- `for root, dirs, files in os.walk(folder_path):`:使用os模块中的walk函数遍历文件夹中的所有文件。
- `if file.endswith(".txt"):`:只处理txt文件。
- `shutil.copyfileobj(f, out)`:将当前txt文件的内容复制到新的txt文件中。
- `size += os.path.getsize(file_path)`:更新新的txt文件的大小。
- `if size > max_size:`:如果当前新的txt文件的大小已经超过了20MB,就创建一个新的txt文件。
- `out.close()`:关闭当前文件。
- `output_file = f"merged_file_{file_count}.txt"`:创建一个新的文件名。
- `with open(output_file, "wb") as out:`:打开一个新的文件,用于存储剩下的内容。
- `size = 0`:重置新的txt文件的大小。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)