for source, destination in files_to_backup: ValueError: too many values to unpack
时间: 2023-07-24 22:04:32 浏览: 152
这个错误是因为你尝试从列表中的每个元素中解压两个值,但实际上每个元素只包含一个值(文件路径)。你可以使用`enumerate()`函数来解决这个问题。以下是修正后的代码:
```python
import os
import subprocess
files_to_backup = [
"/etc/pam.d/su",
"/etc/pam.d/password-auth-ac",
"/etc/pam.d/system-auth",
"/etc/login.defs",
"/etc/ssh/sshd_config",
"/etc/vsftpd/vsftpd.conf",
"/etc/profile",
"/etc/motd"
]
for index, file_path in enumerate(files_to_backup):
if os.path.exists(file_path):
backup_file_path = file_path + ".bak"
subprocess.call(["cp", file_path, backup_file_path])
else:
print(f"File {file_path} does not exist")
```
在修正后的代码中,我们使用了`enumerate()`函数来迭代`files_to_backup`列表,并为每个元素提供了一个索引(index)和文件路径(file_path)。这样,循环中的`source`和`destination`变量就被替换为了正确的变量名`index`和`file_path`。
请确保你有足够的权限来执行备份操作,并且文件路径正确。运行代码后,将执行文件备份操作或打印相应的消息。
阅读全文