回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我卡住了。我把我们网络上所有有唯一ID的文件夹移到一个中心位置。有几个文件夹有打字错误,因此与中心位置的唯一ID不匹配。我找到了正确的ID,但我需要在移动这些文件夹之前重命名它们。例如,我创建了一个具有错误唯一ID的excel电子表格,并且在单独的列中具有正确的ID。现在,我想用正确的ID重命名文件夹,然后将这些文件夹转移到中心位置。我的代码是…粗糙的,因为我想不出一个好的方法。我觉得使用列表是一种可行的方法,但是由于我的代码是遍历一个文件夹,所以我不确定如何实现这一点</p>
<p><strong>编辑:我想像<a href="https://stackoverflow.com/questions/11916625/python-how-can-i-rename-several-files-based-off-a-list?rq=1">this</a>这样的东西可能就是我想要的</strong></p>
<p>例如:
在文件夹A中:名为12334的文件应重命名为1234。然后移动到文件夹1234中的基目录。在</p>
<p>这是我的代码:</p>
<pre><code>import os
import re
import sys
import traceback
import collections
import shutil
movdir = r"C:\Scans"
basedir = r"C:\Links"
subfolder = "\Private Drain Connections"
try:
#Walk through all files in the directory that contains the files to copy
for root, dirs, files in os.walk(movdir):
for filename in files:
#find the name location and name of files
path = os.path.join(root, filename)
#file name and extension
ARN, extension = os.path.splitext(filename)
print ARN
#Location of the corresponding folder in the new directory
link = os.path.join(basedir, ARN)
if not os.path.exists(link):
newname = re.sub(372911000002001,372911000003100,ARN)
newname =re.sub(372809000001400,372909000001400,ARN)
newname =re.sub(372809000001500,372909000001500,ARN)
newname =re.sub(372809000001700,372909000001700,ARN)
newname = re.sub(372812000006800,372912000006800,ARN)
newname =re.sub(372812000006900,372912000006900,ARN)
newname =re.sub(372812000007000,372912000007000,ARN)
newname =re.sub(372812000007100,372912000007100,ARN)
newname =re.sub(372812000007200,372912000007200,ARN)
newname =re.sub(372812000007300,372912000007300,ARN)
newname =re.sub(372812000007400,372912000007400,ARN)
newname =re.sub(372812000007500,372912000007500,ARN)
newname =re.sub(372812000007600,372912000007600,ARN)
newname =re.sub(372812000007700,372912000007700,ARN)
newname =re.sub(372812000011100,372912000011100,ARN)
os.rename(os.path.join(movdir, ARN, extension ),
os.path.join(movdir, newname, extension))
oldpath = os.path.join(root, newname)
print ARN, "to", newname
newpath = basedir + "\\" + newname + subfolder
shutil.copy(oldpath, newpath)
print "Copied"
except:
print ("Error occurred")
</code></pre>
<p>感谢下面的答案,这里是我的最终代码:</p>
^{pr2}$