python-3.x - 我需要将文件从 appdata/local 复制到 C 驱动器并在每次运行程序时覆盖它们
问题描述
我使用了一个程序,可悲的是,它会随机损坏一些保存的文件。为了提供帮助(尽管我是新手),我正在尝试制作一个 Python 程序来基本上从 AppData/local 目录中备份这些文件并将它们放在 C 上的文件夹中。我需要这个程序来覆盖以前复制的文件每次运行时。
我需要概括 AppData/local,因为理论上每个使用该程序的人在 AppData 文件夹之前都有一个不同的用户目录。
我已经尝试过自己的一些尝试来解决问题。我会发布结果。
# Imports
import shutil
import os
import distutils
from distutils import dir_util
# Paths
# os.makedirs("C:/RevSaves-Backup")
path = '%LOCALAPPDATA%/Remnant'
backup_path = "C:/RevSaves-Backup"
# Procedures
print("The Very Basic Remnant Save Backup Utility")
print(" ")
print("Backing up the save source:")
print(path)
print(" ")
print("It is recommended you run this at regular intervals \nto ensure you have the latest saves up to date.")
distutils.dir_util.copy_tree(path, backup_path)
print("Backup completed.")
当我通过命令提示符或 PowerShell 执行此操作时,我收到以下消息:
回溯(最后一次调用):文件“RevSaveBkUp.py”,第 28 行,在 distutils.dir_util.copy_tree(path, backup_path) 文件“C:\Users\candr\AppData\Local\Programs\Python\Python37-32\ lib\distutils\dir_util.py”,第 124 行,在 copy_tree “无法复制树 '%s': 不是目录”% src) distutils.errors.DistutilsFileError: 无法复制树 '%LOCALAPPDATA%/Remnant': 不是目录
我无法“定位”系统特定的本地 AppData 文件夹。
解决方案
经过大量阅读,如果其他人试图做类似的事情,我提出了以下解决方案。但是,我不知道这是否是“最佳”或“正确”的做事方式。
无论用户登录如何,以下是我定位 AppData Local 文件夹的方法:
path = os.path.join(os.path.expanduser('~'), 'AppData', 'Local')
对于像我这样的新手的一些解释:
- os.path.join基本上将路径中的文件夹连接在一起。例如,使用上面的代码,join 会将 AppData“连接”到本地和“用户文件夹”(在代码中引用为“~”)。输出如下所示:C:\Users\your_username\AppData\Local
- os.path.expanduser定义有问题的用户。例如,“~”以当前登录用户为目标。它位于 () 内,因为这是您如何告诉“您的代码”以谁为目标的方式。如果你想要一个特定的用户(如果你有多个),我相信你可以使用 os.path.expanduser('Jane') 。
保留上面的注释作为参考,这种方法允许我定义我需要的变量并将它们用于上面的副本,我通常无法按照我的意愿使用 AppData 目录。
这是通过使用以下代码作为示例来完成的:
path = os.path.join(os.path.expanduser('~'), 'AppData', 'Local')
backup_path = "C:/MyBackupFolder"
最后我们执行了这个副本:
distutils.dir_util.copy_tree(path, backup_path)
上面复制了我需要的AppData信息到备份文件夹。
我希望这可以帮助每个人像我一样学习,它非常方便。
推荐阅读
- sonarqube - 默认情况下将项目设置为私有
- java - 如何在某些 IDE 中对我的对象调用方法?
- google-cloud-ml - 无法在 GCP ml-engine(运行时版本 1.8)中导入 cv2
- angular - 进行 Angular 单元测试时出错
- php - 当网页重新加载表单输入提交时如何跳过部分php?
- python - python pip:无法安装flask和zappa - 与要求相矛盾
- javascript - 如何在数组循环中访问原型函数
- c# - 用于导航 wpf 的 Contentcontrol 或停靠面板
- java - 当我们创建一个类的对象并使用另一个类引用它时究竟会发生什么
- excel - Excel中的单元格按字体颜色求和