在我的脚本结束时,如何将我下载的文件移动到新文件夹? [复制]
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
命令中告诉他们去哪里。以上是关于在我的脚本结束时,如何将我下载的文件移动到新文件夹? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用tableview外的按钮将tableview移动到新的tableview