python - 根据文件名与文件夹Python匹配对文件进行排序

标签 python file sorting directory

我希望用 Python 编写一个脚本,帮助我对基于一个文件名的文件进行排序,并为该名称创建一个字典(如果该名称不存在)。

例如: 我在名为 Unsorted 的文件夹中有 4 个文件

111-iam.txt

111-how.txt

110-uare.txt

110-uok.txt

我想创建一个文件夹名称111来保留所有文件名111-xxx.txt和文件夹名称110来保留所有文件名110-xxx.txt

我希望它检查已经存在的文件夹是否将文件移动到该文件夹​​中,如果没有,则创建一个新文件夹。

它在第一次运行时有效,但如果我在未排序的文件夹名称中有以 111 或 110 开头的新文件,则会显示错误。 错误是 os.mkdir(full_path) FileExistsError: [Errno 17] 文件存在: '/home/pi/Desktop/Sorted/111' 这是我的代码。

先谢谢大家了

import os
import shutil

srcpath = "/home/pi/Desktop/Unsorted"
srcfiles = os.listdir(srcpath)

destpath = "/home/pi/Desktop/Sorted"

# extract the ten letters from filenames and filter out duplicates
destdirs = list(set([filename[0:2] for filename in srcfiles]))


def create(dirname, destpath):
    full_path = os.path.join(destpath, dirname)
    os.mkdir(full_path)
    return full_path

def move(filename, dirpath):shutil.move(os.path.join(srcpath, filename),dirpath)

# create destination directories and store their names along with full paths
targets = [(folder, create(folder, destpath)) for folder in destdirs]

for dirname, full_path in targets:
    for filename in srcfiles:
        if dirname == filename[0:2]:
            move(filename, full_path)

最佳答案

os.path.isdir(path)将会:

Return True if path is an existing directory.

因此您可以将目录创建方法更改为:

import os.path
...
def create(dirname, destpath):
    full_path = os.path.join(destpath, dirname)
    if os.path.isdir(full_path):
        os.mkdir(full_path)
    return full_path

或者,ask forgiveness not permission :

def create(dirname, destpath):
    full_path = os.path.join(destpath, dirname)
    try:
        os.mkdir(full_path)
    except FileExistsError:
        pass
    return full_path

关于python - 根据文件名与文件夹Python匹配对文件进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42942705/

相关文章:

python - 当值为零时如何完全删除箭袋箭头

python - swift 和 Python : identical code results in different results

python - Python中列表所有元素的频率

java - Java中使用delete()方法删除文件

java - 无需InputStream即可访问jar中的csv文件

php - 如何在调用者文件之外正确调用 css 文件夹?

java - 如何对预排序 TreeSet 中对象的某些属性进行排序?

python - 如果 Rasa 无法识别意图怎么办?

objective-c - 排序 JSON 对象

c++ - 通过数组排序 C++