【发布时间】:2020-05-09 05:20:42
【问题描述】:
我对 python 还很陌生,我将把它作为我的第二次体验来继续我的学习。我的第一个项目(使用 pandas 进行数据分析)会比这个更难,但这将是一个新的领域,我需要一些帮助才能开始,因为我什至不知道在任何文档中搜索什么。
我在一个目录中有许多以电视节目命名的文件夹。我在另一个目录中有很多文件,多个剧集,其中几个节目。一个问题是,当我下载每一集时,它都存储在同一个标题的文件夹中。到目前为止,我一直在手动组织文件,但它已经到了自动化的好地方(也是一个很好的学习练习)。有没有办法在“下载”文件夹中搜索包含包含字符串的文件的文件夹,比如“家园”,并将该文件(剧集)移动到另一个目录中标题为“家园”的文件夹中?我还需要为每个文件/文件夹匹配多个字符串,例如“Game”和“Thrones”。将它们移动到目录很容易,但获得匹配的字符串是我想要了解的地方。然后我的下一个目标是遍历“下载”中的每个文件并将其分类到正确的电视节目文件夹中。
folders = 'list of folders in downloads'
#maybe I need to create a list here or a function that creates a list?
source_dir = "C:\Users\Downloads"
destination_dir = "C:\Users\TV Shows"
for folder_names in folders:
if folder_name contains destination_name:
# destination_name will be undefined but this is what i want
source_path = str(source_dir) + str(file_name) + str(.mp4)
destination_path = str(destination_dir) + str(file_name) +
str(.mp4)
shutil.move(source_path, destination_path)
if not:
do nothing
必须更改它,因为有些变量会产生错误并且语法不好,但这是我想要的一般想法。
【问题讨论】:
-
你看过
pathlib吗?您将与shutil一起编写一个简单的脚本。 pathlib的综合使用见rednafi.github.io/digressions/python/2020/04/13/… -
您是否正在为此寻找特定于 python 的解决方案?如果没有,您可以使用 shell 中的命令执行此操作:stackoverflow.com/a/22388517/10266625
-
if "Game" in folder_name and "Thrones" in folder_name:甚至if "game" in folder_name.lower() and "thrones" in folder_name.lower():更多单词可以使用for-loop 分别检查每个单词。 -
顺便说一句:
folders_and_files = os.listdir("downloads")。或带有子文件夹for root, folders, files in os.walk("downloads"): -
好吧,我想用 python 来做一些练习。 Pathlib 可能会工作。我需要我的脚本在目录中搜索文件夹名称(我可以很容易地获得文件夹名称列表),然后在另一个目录中搜索所有文件名(可以获得列表),以及是否至少有两个字符串与任何文件匹配和任何文件夹,然后将该/那些文件移动到该文件夹中。问题在于有很多文件和很多文件夹,因此将它们一一列出并不理想。我需要一个“如果文件名中的两个字符串与文件夹名中的两个字符串匹配,则将文件移动到文件夹”命令。
标签: python for-loop if-statement path shutil