python脚本实现:使用zip命令压缩整个目录,包括所有文件和所有目录。由于文件不可读导致压缩失败,需要记录所有失败的文件。
时间: 2023-07-15 22:15:57 浏览: 173
可以使用Python的subprocess模块来执行系统命令,从而调用zip命令进行压缩。同时,可以使用os模块来遍历整个目录,记录所有失败的文件。
下面是一个实现的示例代码:
```python
import os
import subprocess
# 要压缩的目录路径
dir_path = "/path/to/dir"
# 压缩后的文件名
zip_file_name = "compressed.zip"
# 记录所有失败的文件路径
failed_files = []
# 遍历整个目录,记录所有失败的文件
for root, dirs, files in os.walk(dir_path):
for file in files:
file_path = os.path.join(root, file)
try:
# 尝试读取文件
with open(file_path, "rb") as f:
pass
except:
# 记录失败的文件
failed_files.append(file_path)
# 使用zip命令进行压缩
zip_command = ["zip", "-r", zip_file_name, dir_path]
result = subprocess.run(zip_command, capture_output=True)
if result.returncode == 0:
print("压缩成功!")
else:
print("压缩失败!")
print(result.stderr.decode())
# 输出所有失败的文件路径
if failed_files:
print("以下文件无法读取:")
for file_path in failed_files:
print(file_path)
```
这段代码会先遍历整个目录,记录所有不能读取的文件路径,并在压缩完成后输出这些文件路径。然后使用subprocess模块执行zip命令进行压缩,如果返回值为0则表示成功,否则表示失败,并输出错误信息。
阅读全文