输入一个文件,如果该文件大于500M,则按照450M左右的标准按行拆分,将该文件拆分为若干个子文件,如果该文件小于500M则不拆分。拆分后的子文件命名规则为:“sub_file”加上序号n加上时间戳,用Python实现
时间: 2024-04-11 11:26:13 浏览: 16
文件按指定行数分解成小文件
你可以使用以下的Python代码来按行拆分文件为子文件:
```python
import os
import datetime
def split_file(file_path):
file_size = os.path.getsize(file_path)
if file_size <= 500 * 1024 * 1024:
print("文件大小不足500M,无需拆分")
return
chunk_size = 450 * 1024 * 1024
sub_file_num = 1
with open(file_path, 'r') as f:
lines = f.readlines()
line_count = len(lines)
if line_count == 0:
print("文件为空,无需拆分")
return
sub_file_path = f"sub_file{sub_file_num}_{datetime.datetime.now().strftime('%Y%m%d%H%M%S')}"
with open(sub_file_path, 'w') as sub_file:
for line in lines:
sub_file.write(line)
if os.path.getsize(sub_file_path) >= chunk_size:
print(f"拆分子文件:{sub_file_path}")
sub_file.close()
sub_file_num += 1
sub_file_path = f"sub_file{sub_file_num}_{datetime.datetime.now().strftime('%Y%m%d%H%M%S')}"
sub_file = open(sub_file_path, 'w')
if sub_file_num > 1:
print(f"拆分子文件:{sub_file_path}")
else:
os.remove(sub_file_path)
print("文件拆分完成")
# 测试
file_path = "your_file_path"
split_file(file_path)
```
请将代码中的`your_file_path`替换为你要拆分的文件的路径。拆分后的子文件命名规则为“sub_file”加上序号n加上当前时间戳。
这段代码首先获取文件的大小,如果小于等于500M,则不需要拆分。如果大于500M,则按照450M左右的标准按行拆分文件为若干个子文件。拆分过程中,使用`readlines()`方法逐行读取原始文件,并将每行写入到新的子文件中。当一个子文件的大小达到或接近450M时,关闭该子文件,创建新的子文件继续写入。
希望对你有帮助!如果还有其他问题,请随时提问。
阅读全文