Python 3.x 基于文件和文件夹名称在python中移动文件
python相对较新(不是每天都使用)。然而,我试图简化一些事情。我基本上有长名称的键,但是键(或文件名)的子集具有与相关文件夹相同的序列。{请原谅缩进,它正确缩进。} 文件1应该是:101010-CDFGH-8271.dat,文件夹是CDFGH-82 文件2是:101010-QWERT-7425.dat,文件夹是QWERT-74Python 3.x 基于文件和文件夹名称在python中移动文件,python-3.x,directory,shutil,Python 3.x,Directory,Shutil,python相对较新(不是每天都使用)。然而,我试图简化一些事情。我基本上有长名称的键,但是键(或文件名)的子集具有与相关文件夹相同的序列。{请原谅缩进,它正确缩进。} 文件1应该是:101010-CDFGH-8271.dat,文件夹是CDFGH-82 文件2是:101010-QWERT-7425.dat,文件夹是QWERT-74 import os import glob import shutil files = os.listdir("files/location") dest_1 =
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)
代码运行时没有错误,但是没有任何移动。期待您的回复和学习机会
抱歉,已更新格式。请尝试以下变体:
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)
此外,这些文件的名称不一样,但是这个范围是我所需要的。考虑使用正确的缩进,所以if语句在for循环中(可能是嵌套for循环)。请看一下有关代码格式化的内容。在没有格式化代码的情况下,我不得不猜测缩进是什么,因此我假设缩进是最基本的。您的错误可能是您使用文件名的子集来分配给
文件(与目录名进行比较),然后还要移动相同的子集文件名,而不是原来的文件名。我认为你的第一个评论是对的。如果我执行上述语句,我会得到一个文件或目录不存在的错误。如果我散列出shutil行,并在满足条件的情况下执行打印(“true”),它将打印true。