【问题标题】:Moving files in python based on file and folder name根据文件和文件夹名称在python中移动文件
【发布时间】:2018-05-18 22:23:33
【问题描述】:

python 相对较新(不是每天都使用它)。但是我试图简化一些事情。我基本上有长名称的键,但是键的一个子集(或文件名)具有相同的关联文件夹序列。{请原谅缩进,它是正确缩进的。}IE

file1 为:101010-CDFGH-8271.dat,文件夹为 CDFGH-82 file2 将是:101010-QWERT-7425.dat 并且文件夹是 QWERT-74

import os
import glob
import shutil


files = os.listdir("files/location")
dest_1 = os.listdir("dest/location")

for f in files:
    file = f[10:21]

for d in dest_1:
    dire = d

if file == dire:
    shutil.move(file, dest_1)

代码运行没有错误,但没有任何动作。期待您的回复和学习机会。

抱歉更新了格式。

【问题讨论】:

  • 还有那些不是文件名,但我需要的是那个范围。
  • 考虑使用正确的缩进,这样你的 if 语句就会落入一个 for 循环(也可能是一个嵌套的 for 循环)。
  • 请查看stackoverflow.com/help/formatting 了解代码格式。如果没有格式化您的代码,我不得不猜测缩进是什么,所以我假设是最基本的。
  • 您的错误很可能是您使用文件名的子集分配给file(与目录名进行比较),但又想移动相同的子集文件名,而不是原来的文件名。

标签: python-3.x directory shutil


【解决方案1】:

尝试以下变体:

basedir = "dest/location"

for fname in os.listdir("files/location"):
    dirname = os.path.join(basedir, fname[10:21])
    if os.path.isdir(dirname):
        path = os.path.join("files/location", fname)
        shutil.move(path, dirname)

【讨论】:

  • 我认为您的第一条评论是正确的。如果我执行上述语句,我会收到文件或目录不存在错误。如果我散列了 shutil 行,而是在满足条件时执行 print("true"),它会打印 true。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-07
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 2013-11-20
  • 2021-12-26
相关资源
最近更新 更多