怎么用Python一键扫描整个文件夹,把所有文件的完整路径存进txt里?

<think>我们参考上述引用来编写一个Python脚本,实现获取指定文件夹下所有文件的绝对路径,并将这些路径逐行写入一个文本文件。 根据引用[2]和引用[4],我们可以使用`os.walk`来遍历目录,然后获取每个文件的绝对路径,并写入到指定的txt文件中。 步骤: 1. 导入os模块。 2. 定义要遍历的根目录(root_dir)和要输出的txt文件路径(output_file)。 3. 使用`os.walk`遍历根目录,对于遍历到的每个文件,构建其绝对路径。 4. 将绝对路径写入到输出文件中,每个路径占一行。 注意:我们不需要像引用[4]那样只写入特定扩展名的文件,而是所有文件。因此,我们不需要过滤扩展名。 但是,根据用户需求,我们只需要获取文件的绝对路径,不包括目录。 我们将编写一个函数来实现这个功能,并允许用户指定根目录和输出文件路径。 代码结构如下: import os def save_file_paths(root_dir, output_file): # 打开输出文件用于写入 with open(output_file, 'w', encoding='utf-8') as f: # 遍历root_dir for dirpath, dirnames, filenames in os.walk(root_dir): for filename in filenames: # 构建文件的绝对路径 file_path = os.path.join(dirpath, filename) # 写入文件,并换行 f.write(file_path + '\n') if __name__ == '__main__': root_dir = input("请输入要遍历的文件夹路径: ") output_file = input("请输入输出文件路径: ") save_file_paths(root_dir, output_file) 但是,注意:用户输入的路径可能是相对路径或绝对路径,我们使用os.walk可以处理相对路径,因为它会基于当前工作目录。但是,为了确保正确,我们可以将用户输入的路径转换为绝对路径。 另外,我们也可以考虑不通过用户输入,而是直接在代码中指定路径(根据用户需求调整)。这里我们按照用户要求,编写一个脚本,所以我们将使用函数,并允许在调用时传递参数。 但是,用户要求是“编写Python脚本”,所以我们可以提供两种方式:一种是直接在代码中修改root_dir和output_file,另一种是通过命令行参数传入。 考虑到易用性,我们可以使用argparse模块来支持命令行参数,这样用户可以在运行脚本时指定目录和输出文件。 不过,根据问题描述,用户并没有要求命令行参数,所以我们可以先提供固定变量,然后提示用户可以通过修改代码中的变量来指定路径。 但是,为了更方便,我们将使用命令行参数的方式。 我们参考引用[4]中的做法,使用os.path.abspath来将路径转为绝对路径。 改进版本(使用命令行参数): import os import argparse def save_file_paths(root_dir, output_file): # 将root_dir转为绝对路径,但os.walk可以使用相对路径,不过为了统一,我们将其转为绝对路径 root_dir = os.path.abspath(root_dir) with open(output_file, 'w', encoding='utf-8') as f: for dirpath, dirnames, filenames in os.walk(root_dir): for filename in filenames: # 构建绝对路径 file_path = os.path.join(dirpath, filename) # 注意:这里file_path已经是绝对路径,因为dirpath是绝对路径(由os.walk返回的是传入路径的绝对形式?) # 但是,我们传入的root_dir已经转为绝对路径,所以dirpath也是绝对路径。 f.write(file_path + '\n') if __name__ == '__main__': parser = argparse.ArgumentParser(description='获取指定文件夹下所有文件的绝对路径并写入文本文件') parser.add_argument('root_dir', help='要遍历的根目录') parser.add_argument('output_file', help='输出的文本文件路径') args = parser.parse_args() save_file_paths(args.root_dir, args.output_file) print(f"已完成!共写入文件路径到 {args.output_file}") 这样,用户可以通过命令行运行:python script.py /path/to/directory output.txt 但是,如果用户不熟悉命令行参数,我们也可以提供另一种方式:在代码中直接指定路径(注释掉命令行参数部分,改用固定变量)。 为了灵活性,我们选择使用命令行参数。同时,我们也可以考虑如果没有提供命令行参数,则使用默认值或提示输入。 不过,按照要求,我们尽量简单明了。这里我们采用命令行参数的方式。 但是,注意:如果输出文件的目录不存在,我们需要创建目录吗?或者如果输出文件已经存在,我们会覆盖它。 在代码中,我们使用'w'模式打开文件,会覆盖已有文件。如果用户希望追加,可以改为'a',但根据需求是写入,且每行一个,应该是覆盖(因为要的是所有文件)。 另外,编码问题:我们使用utf-8编码写入,这样可以避免路径中含有非英文字符时出错。 现在,我们编写完整的脚本。 但是,用户可能希望得到的是规范化的路径(例如,将路径中的分隔符统一为当前系统的分隔符,或者去除多余的'.'和'..')。我们使用os.path.join和os.path.abspath已经可以保证是规范的绝对路径。 因此,我们按照上述思路编写代码。 注意:在Windows系统中,路径分隔符是反斜杠,而在Linux和macOS中是斜杠。在写入文件时,我们不需要特意转换,因为Python会使用当前系统的分隔符。但是,如果用户希望统一为斜杠,可以替换为斜杠。不过,通常不需要,因为系统都能识别。 我们按照系统默认的方式写入。 最终代码: </think> 下面是一个Python脚本,用于获取指定文件夹下所有文件的绝对路径,并将结果写入文本文件(每行一个路径): ```python import os def save_file_paths(root_dir, output_file): """ 获取目录下所有文件的绝对路径并写入文本文件 :param root_dir: 要遍历的根目录 :param output_file: 输出文件路径 """ # 确保输出目录存在 os.makedirs(os.path.dirname(output_file), exist_ok=True) with open(output_file, 'w', encoding='utf-8') as f: # 遍历目录树 for dirpath, _, filenames in os.walk(root_dir): for filename in filenames: # 构建文件的绝对路径 file_path = os.path.abspath(os.path.join(dirpath, filename)) # 写入文件 f.write(file_path + '\n') if __name__ == "__main__": # 配置参数(根据实际需求修改) target_directory = "/path/to/your/directory" # 替换为你的目标目录 output_txt = "file_paths.txt" # 输出文件名 # 执行路径获取和保存 save_file_paths(target_directory, output_txt) print(f"已完成!所有文件路径已保存到 {os.path.abspath(output_txt)}") ``` ### 使用说明: 1. **修改参数**: - 将 `target_directory` 替换为你要扫描的实际目录路径(例如:`"C:/Users/Name/Documents"` 或 `"/home/user/documents"`) - 可选的:修改 `output_txt` 指定输出文件名 2. **运行脚本**: - 脚本会遍历指定目录及其所有子目录 - 将所有文件的绝对路径写入输出文件 - 每行一个路径,使用系统标准的路径格式 3. **输出示例**: ``` C:\Projects\data\file1.jpg C:\Projects\data\reports\summary.docx /home/user/docs/notes.txt ``` ### 关键功能说明: 1. **`os.walk()` 遍历目录**:递归获取所有子目录中的文件[^1][^2] 2. **`os.path.abspath()`**:生成文件的绝对路径[^3] 3. **自动创建输出目录**:`os.makedirs(..., exist_ok=True)` 确保输出目录存在 4. **UTF-8 编码**:正确处理包含中文等特殊字符的路径[^4] ### 注意事项: - 需要 Python 3.6+ 运行环境 - 会跳过空目录,只记录文件路径 - 输出文件中的路径使用当前操作系统的分隔符(Windows为`\`,Linux/macOS为`/`)

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考