首页 > 编程问答 >如何在 Mac 上运行 Python 文件来读取 txt 文件并将其写入外部硬盘?

如何在 Mac 上运行 Python 文件来读取 txt 文件并将其写入外部硬盘?

时间:2024-07-25 09:06:18浏览次数:13  
标签:python permissions shutil hard-drive python-os

我目前有一个充满了我想阅读的 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("已完成复制文件。")

解释:

  1. 导入必要的模块:
  2. os 用于处理与文件系统相关的操作,例如检查文件是否存在以及构建文件路径。
  3. shutil 用于复制文件。

  4. 定义源文件夹和目标文件夹的路径:

  5. "/Volumes/YourExternalDrive/未读的 epub" "/Volumes/YourExternalDrive/已读的 epub" 替换为你的外部硬盘上包含 epub 文件的实际文件夹路径。
  6. "/Users/YourUserName/Downloads" 替换为你希望复制文件的目标文件夹。

  7. 创建 create_file_list 函数:

  8. 此函数接受一个文件路径作为参数(txt 文件的路径)。
  9. 它打开 txt 文件,读取每一行,去掉开头和结尾的空格,并将每一行追加到一个列表中。
  10. 最后,它返回包含 txt 文件中所有文件名的列表。

  11. 创建 copy_files 函数:

  12. 此函数接受源文件夹路径和一个文件名列表作为参数。
  13. 它循环遍历文件名列表,并为每个文件名构建源文件路径和目标文件路径。
  14. 它使用 os.path.exists() 检查源文件是否存在。如果存在,它使用 shutil.copy2() 将文件复制到目标文件夹,并打印一条成功消息。如果文件不存在,它会打印一条消息,指示文件未找到。

  15. 定义 txt 文件的路径:

  16. /path/to/unread_epubs.txt /path/to/read_epubs.txt 替换为包含未读和已读 epub 文件名列表的 txt 文件的实际路径。

  17. 创建 epub 文件列表:

  18. 使用 create_file_list 函数从 txt 文件创建未读和已读 epub 文件列表。

  19. 从源文件夹复制文件:

  20. 使用 copy_files 函数从各自的源文件夹复制未读和已读的 epub 文件。

  21. 打印完成消息。

运行脚本:

  1. 将此代码保存为 Python 文件(例如, copy_epubs.py )。
  2. 打开终端并导航到保存文件的目录。
  3. 通过运行以下命令执行脚本: python3 copy_epubs.py

此脚本将读取 txt 文件,从外部硬盘上的源文件夹复制列出的 epub 文件,并将它们粘贴到你的下载文件夹中。

标签:python,permissions,shutil,hard-drive,python-os
From: 78791070

相关文章

  • 深入探索:使用Python进行网站数据加载逻辑分析与请求
    作为一名资深的Python程序员,我经常需要从网站中提取数据以供分析或进一步处理。这项任务涉及到对网站数据加载逻辑的深入分析,以及使用Python进行高效的网络请求。在本文中,我将分享如何分析网站的数据加载方式,并使用Python的requests库来模拟浏览器行为,获取所需的数据。网站......
  • 如何将 Python 列表添加到 Excel 中已有值的列的末尾?
    我目前正在尝试编写一个程序,将值附加到列表中,然后将这些值添加到Excel数据表中的列中。每次运行该程序时,我都希望在同一列的末尾添加更多值。所以我不确定如何解决这个问题,而且我在网上找到的其他答案也没有取得多大成功。以下是使用openpyxl库在Python中将......
  • 如何学习Python:糙快猛的大数据之路(学习地图)
    在这个AI和大数据主宰的时代,Python无疑是最炙手可热的编程语言之一。无论你是想转行还是提升技能,学习Python都是一个明智之选。但是,该如何开始呢?今天,让我们聊聊"糙快猛"的Python学习之道。什么是"糙快猛"学习法?"糙快猛"学习法,顾名思义,就是:糙:不追求完美,允许存......
  • Python 中 __get__ 方法的内部原理
    我正在摆弄描述符,结果碰壁了。我以为我可以像使用任何其他方法一样直接调用它,但显然,它似乎不一致或者我遗漏了一些东西。假设我有一个用作描述符的坐标类:|||还有一个Point类,它有2个坐标属性:classCoordinate:def__set_name__(self,owner,name):self._na......
  • 使用带有私钥的云前端生成签名 URL 的问题..使用 Python 3.7 为带有空格的 S3 对象生
    我在使用Python3.7为S3对象生成签名URL时遇到问题。具体来说,键中带有空格的对象的URL会导致“访问被拒绝”错误,而没有空格的对象的URL通常工作正常。但是,并非所有不带空格的对象都能正常工作,带空格的对象始终会失败。fromdatetimeimportdatetime,timedeltaimpo......
  • 有没有更好的方法来在存储库中的一组 python 程序之间共享公共代码
    当我想要快速、轻松地做许多不同的事情时,我会选择Python-即我总是会得到许多Python“程序”-例如一组脚本-或者如果我正在玩一些东西,一堆测试程序等-即始终是许多不同程序的松散集合。但是,我会分享某些内容。例如,如果我正在使用AI-我可能有30个左右完全不相......
  • 如何在Python中从两个不同长度的列表创建DataFrame,为第二个列表中的每个值重复第一个
    我是一个超级初学者,所以请耐心等待。我觉得这应该很容易,但我无法弄清楚。我不确定是否应该创建两个列表,然后将它们组合起来,或者是否有办法以这种方式直接创建DataFrame。我需要一列包含这些值:df=pd.DataFrame({'x1':np.linspace(-2.47,2.69,num=101)})然后我将值A......
  • Python multiprocessing.connection.Connection 的行为不符合规范
    根据python规范,recv()pythonConnection的方法,(从multiprocessing.Pipe()返回,当管道为空且管道的另一端关闭时抛出EOFError(这里参考:https://docs.python.org/3.9/library/multiprocessing.html#multiprocessing.connection.Connection.re......
  • 使用 python Flask 发送邮件中的图像
    我想发送一封包含html代码和图像的电子邮件但在gmail中它说图像已附加,我不想要这样,我只想要电子邮件正文中的图像。html_content=f"<imgsrc="cid:banner"alt=""style="width:80%;">"msg=MIMEMultipart('related')html_part=MIMEText(html_c......
  • 在 python requests modul 中,如何检查页面是否使用“POST”方法或“GET”方法
    如何使用python“requests”模块检查页面是否使用“GET”方法或“POST”方法。我期望输出为True或False,或者GET或Post预期代码:importrequestsurl=f"www.get_example.com"response=requests.get(url)ifresponse.check_get==True:print("get")你......