【问题标题】:How to take all files from a folder as input (one at a time) and save them into another folder after processing?如何将文件夹中的所有文件作为输入(一次一个)并在处理后将它们保存到另一个文件夹中?
【发布时间】:2021-12-27 10:26:05
【问题描述】:

我有一个.py 脚本,它一次接收一个.csv 并对其进行预处理。我是这样运行 bash 命令的:

python3 cleaning_script.py file1.csv results_file1.csv。它工作得很好。一个文件夹中有300多个文件我必须预处理,有没有更好的方法(循环可能,但我不知道如何在这个环境中使用循环)我可以在其中提到文件夹并且每个文件是作为源文件夹的输入,预处理后的文件是否保存在目标文件夹中?

由于系统中的非管理权限(Windows 10),我使用 Rstudio 终端来执行我的 bash 命令。

【问题讨论】:

    标签: python r bash


    【解决方案1】:

    对于 bash,如果没有大量文件,则可以使用 glob:

    for file in path/to/dir/*.csv
    do
        python3 cleaning_script.py "$file" "$(dirname "$file")/result_$(basename "$file")"
    done
    
    
    

    【讨论】:

    • 这可能是最简单的解决方案。如果您想在“dir”及其子目录中查找所有 *.csv 文件,请使用 path/to/dir/**/*.csv
    • 这似乎是最简单的解决方案。但是,我真的是这个的初学者:(而且我无法运行这个命令。我正在运行这个:C:\Users\AneesBaqir\Downloads\Final>for file in C:/Users/AneesBaqir/Downloads/Final/files/timeline/*.csv do python3 cleaning_script.py "$file" "$(dirname "$file")/result_$(basename "$file")" done,我收到这条消息此时文件是意外的。。可以请你帮我解决这个问题?
    • @AneesBaqir 您是否在寻找 PowerShell 解决方案?在 WSL bash 中,路径更像 /mnt/c/Users/...
    • 老实说,我不知道这会如何工作。我只是在尝试使用我的 Windows 10 系统在我的 RStudio 终端中执行您建议的操作。
    • 如果您已经位于包含 CSV 文件的目录中,并且您还想在那里生成处理过的文件,那么您可以执行 for file in *.csv; do python3 cleaning_script.py "$file" "result_$file"; done;也就是说,如果你的 RStudio 终端真的是 bash
    【解决方案2】:

    我认为您正在从"os" module 寻找此功能! os.listdir(path='.') 返回“路径”处所有实体的列表,包括文件和其他目录。如果您想递归循环遍历目录的所有实体,请查看 os.walk(top, topdown=True, onerror=None, followlinks=False) here!它有点复杂但更强大。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-08
      • 2010-11-02
      • 1970-01-01
      • 2019-02-15
      • 1970-01-01
      相关资源
      最近更新 更多