在我的脚本结束时,如何将我下载的文件移动到新文件夹? [复制]

Posted

技术标签:

【中文标题】在我的脚本结束时,如何将我下载的文件移动到新文件夹? [复制]【英文标题】:At the end of my script, how to move my downloaded files to a new folder? [duplicate] 【发布时间】:2019-06-16 10:59:30 【问题描述】:

我有一个脚本可以下载大约 1000 个 csv 文件,将它们分类为 5 个 csv 文件,然后将这 5 个文件分类为 1 个 csv 文件。

该脚本运行良好,但很明显,当您运行它时,无论您从哪里运行程序,最终都会得到一千个 csv 文件。有没有办法脚本完成后将所有创建的 csv 文件移动到一个名为“data”或类似名称的新文件夹中?

Thanks.

【问题讨论】:

但我很困惑我的路在哪里 @dyukha 你是什么意思? 为什么我的评论被删除了? 哦,不是我吗?? 【参考方案1】:

这段代码对我有用:

import glob, os, shutil

source_dir = 'C:/Users/george/Desktop/my aemo app/a'
dst = 'C:/Users/george/Desktop/my aemo app/b' 
files = glob.iglob(os.path.join(source_dir, "*.csv"))
for file in files:
    if os.path.isfile(file):
        shutil.copy2(file, dst)

【讨论】:

好的,谢谢。您会通过编辑答案来解释它是如何回答问题的吗?这里有时会删除代码答案,因为通常不清楚发布代码的哪个功能是解决方案。 你可以吗? 你能解释一下它与你原来的不同吗?换句话说,未来的读者如何最好地从中学习?请参阅比尔的回答以获得一个很好的例子 - 看看代码是如何穿插解释的。【参考方案2】:

shutil 模块允许您在 Python 中移动文件。语法如下:

# Preferably put this near the top of your script:
import shutil  

# Use this to move a file:
shutil.move("path/to/original/file.csv", "path/to/destination/file.csv")

如果您的所有 .csv 文件当前都在一个目录中,并且您想要生成所有路径的列表(基本上相当于“ls *.csv”或“dir *.csv”),您可以使用 Python 的 @987654325 @模块:

import os

my_csv_files = []
for file in os.listdir("/my_csv_dir"):
    if file.endswith(".csv"):
        my_csv_files.append(os.path.join("/my_csv_dir", file))

然后您可以遍历生成的列表。或者只是将append 命令替换为上述move 命令以将每个命令移动到一个新文件夹。

顺便说一句,我在您的示例中看到了很多重复的代码。您可能需要考虑编写几个函数来处理这些任务,以便您的代码更易于维护,并且大小只有 1/3。

【讨论】:

感谢您的帮助,至于重复的代码,我对Python很陌生,所以这就是原因 dir 中的my_csv_dir 是什么? 我只是使用“my_csv_dir”作为假名和占位符。只需将“/my_csv_dir”替换为 CSV 文件所在的位置即可。假设它们都被写入同一个地方。 好的,但是现在文件去哪里了? 你的意思是你要把他们搬到哪里?无论您在shutil.move 命令中告诉他们去哪里。

以上是关于在我的脚本结束时,如何将我下载的文件移动到新文件夹? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将配置文件移动到新的开发箱

将 Xcode 文件移动到新计算机并且不再工作

如何使用tableview外的按钮将tableview移动到新的tableview

用于搜索目录并将文件移动到新目录、删除任何副本的 Bash 脚本

用于将所有* .512.png移动到新文件夹的脚本

如何将变量保存到新的文本文件中,以便下次程序运行时加载这些变量?