Python程序遇PermissionError: [Errno 13]权限拒绝,求VSCode提权方法
解决Python加密文件时的PermissionError: [Errno 13] Permission denied问题
错误原因
出现这个错误通常是以下几种情况:
- 目标文件正在被其他程序占用(比如用记事本、浏览器打开着)
- 当前用户对目标文件或其所在文件夹没有读写权限
- 程序试图修改系统保护的文件/目录(比如Windows的
C:\Windows、Mac的/System目录)
解决方法
1. 关闭占用文件的程序
先检查目标文件是否被其他软件打开,关闭后重新运行程序。
2. 提升程序运行权限
Windows系统
- 右键点击VSCode图标,选择「以管理员身份运行」,然后在VSCode中重新执行加密脚本
- 或者在管理员权限的命令提示符(CMD)中运行脚本:
python your_script.py
Mac/Linux系统
- 在终端用管理员权限启动VSCode:
之后在VSCode内运行脚本即可获得更高权限sudo code - 或者直接在终端用sudo执行Python脚本:
sudo python3 your_script.py
3. 修改文件/文件夹权限
如果是目标文件所在目录权限不足,可以手动调整:
- Windows:右键目标文件夹 → 属性 → 安全 → 编辑 → 给当前用户添加「读取」「写入」权限
- Mac/Linux:在终端执行命令给文件添加读写权限:
给文件夹添加权限:chmod u+rw /path/to/your/filechmod u+rwx /path/to/your/folder
你的加密脚本代码
import os from cryptography.fernet import Fernet # generate a random encryption key def generate_key(): return Fernet.generate_key() # encrypt a file with custom byte size def encrypt_file(key, filename, byte_size): with open(filename, 'rb') as f: data = f.read(byte_size) cipher = Fernet(key) encrypted_data = cipher.encrypt(data) with open(filename + '.encrypted', 'wb') as f: f.write(encrypted_data) return key # save encryption key to a text file def save_key_to_file(key): with open('encryption_key.txt', 'wb') as f: f.write(key) # decrypt a file with a given key def decrypt_file(key, filename): with open(filename, 'rb') as f: encrypted_data = f.read() cipher = Fernet(key) decrypted_data = cipher.decrypt(encrypted_data) with open('decrypted_' + filename, 'wb') as f: f.write(decrypted_data) # main function def main(): choice = input("Enter 'E' to encrypt or 'D' to decrypt: ").upper() if choice == 'E': byte_size = int(input("Enter the byte size for encryption: ")) filename = input("Enter the name of the file to encrypt: ") key = generate_key() encrypt_file(key, filename, byte_size) save_key_to_file(key) print("Encryption completed.") print("Encryption key has been saved to 'encryption_key.txt'.") elif choice == 'D': key = input("Enter the decryption key: ") filename = input("Enter the name of the encrypted file to decrypt: ") decrypt_file(key, filename) print("Decryption completed.") else: print("Invalid choice. Please enter 'E' or 'D'.") if __name__ == "__main__": main()
内容的提问来源于stack exchange,提问作者Aiden
相关产品推荐
相关产品推荐

