我目前有一个充满了我想阅读的 epub 的文件夹,一个我已经阅读过并想再次阅读的 epub 的文件夹,以及一个相应的文件,其中每个文件都有 epub 文件的名称。问题是,这些文件夹仅位于我的外部硬盘上。我想要做的是让我的脚本解析这些文件夹中的 epub 列表,并在我的下载文件夹中创建最新的副本,如果我忘记了我下载的任何副本,另一位代码将处理我下载的任何副本我的库中已经有一个副本。
我想这个修复程序必须使用 os 或 Shutil 模块,并且我被告知在使用它们时要非常小心。我确实知道这可能还需要使用 Bash,我对此有一些了解。
当然,以下是使用 Python 从外部硬盘上的 txt 文件中读取数据并创建 epub 文件副本的分步指南:
import os
import shutil
# 定义源文件夹和目标文件夹的路径
source_folder_1 = "/Volumes/YourExternalDrive/未读的 epub" # 用你实际的外部硬盘名称替换 "YourExternalDrive"
source_folder_2 = "/Volumes/YourExternalDrive/已读的 epub"
destination_folder = "/Users/YourUserName/Downloads" # 用你的用户名替换 "YourUserName"
# 使用 txt 文件中列出的文件名创建列表
def create_file_list(file_path):
with open(file_path, 'r') as f:
file_list = [line.strip() for line in f]
return file_list
# 循环遍历源文件夹并复制文件
def copy_files(source_folder, file_list):
for filename in file_list:
source_path = os.path.join(source_folder, filename)
destination_path = os.path.join(destination_folder, filename)
if os.path.exists(source_path):
shutil.copy2(source_path, destination_path)
print(f"已复制 {filename} 到 {destination_folder}")
else:
print(f"找不到 {filename}")
# 为未读的 epub 和已读的 epub 文件定义 txt 文件的路径
unread_epubs_file = "/path/to/unread_epubs.txt"
read_epubs_file = "/path/to/read_epubs.txt"
# 创建 epub 文件列表
unread_epubs = create_file_list(unread_epubs_file)
read_epubs = create_file_list(read_epubs_file)
# 从源文件夹复制文件
copy_files(source_folder_1, unread_epubs)
copy_files(source_folder_2, read_epubs)
print("已完成复制文件。")
解释:
- 导入必要的模块:
-
os
用于处理与文件系统相关的操作,例如检查文件是否存在以及构建文件路径。 -
shutil
用于复制文件。 -
定义源文件夹和目标文件夹的路径:
-
将
"/Volumes/YourExternalDrive/未读的 epub"
和"/Volumes/YourExternalDrive/已读的 epub"
替换为你的外部硬盘上包含 epub 文件的实际文件夹路径。 -
将
"/Users/YourUserName/Downloads"
替换为你希望复制文件的目标文件夹。 -
创建
create_file_list
函数: - 此函数接受一个文件路径作为参数(txt 文件的路径)。
- 它打开 txt 文件,读取每一行,去掉开头和结尾的空格,并将每一行追加到一个列表中。
-
最后,它返回包含 txt 文件中所有文件名的列表。
-
创建
copy_files
函数: - 此函数接受源文件夹路径和一个文件名列表作为参数。
- 它循环遍历文件名列表,并为每个文件名构建源文件路径和目标文件路径。
-
它使用
os.path.exists()
检查源文件是否存在。如果存在,它使用shutil.copy2()
将文件复制到目标文件夹,并打印一条成功消息。如果文件不存在,它会打印一条消息,指示文件未找到。 -
定义 txt 文件的路径:
-
将
/path/to/unread_epubs.txt
和/path/to/read_epubs.txt
替换为包含未读和已读 epub 文件名列表的 txt 文件的实际路径。 -
创建 epub 文件列表:
-
使用
create_file_list
函数从 txt 文件创建未读和已读 epub 文件列表。 -
从源文件夹复制文件:
-
使用
copy_files
函数从各自的源文件夹复制未读和已读的 epub 文件。 -
打印完成消息。
运行脚本:
-
将此代码保存为 Python 文件(例如,
copy_epubs.py
)。 - 打开终端并导航到保存文件的目录。
-
通过运行以下命令执行脚本:
python3 copy_epubs.py
此脚本将读取 txt 文件,从外部硬盘上的源文件夹复制列出的 epub 文件,并将它们粘贴到你的下载文件夹中。
标签:python,permissions,shutil,hard-drive,python-os From: 78791070