首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据文件路径重命名和移动文件

根据文件路径重命名和移动文件
EN

Stack Overflow用户
提问于 2013-01-30 01:23:07
回答 1查看 896关注 0票数 1

我尝试根据文件所在的树路径重命名文件,然后将重命名的文件移动到特定的文件夹(基于其名称)。

例如,我在路径L:\a\b\c\d\e\f\file.pdf中有一个文件,我想将"file.pdf“重命名为"d e f”。

另外,所有子文件夹都在c处分支,所以我希望python扫描文件夹c中包含的子文件夹中的所有文档,以便根据前面提到的模式进行重命名。例如,L:\a\b\c\x\y\z\file.pdf,file.pdf重命名为"x y z";L:\a\b\c\q\r\s\file.pdf,file.pdf重命名为"q s";等等。

然后,我想根据文件名将所有这些文件移动到一个新的、已经存在的文件夹中。例如,对于文件"d e f“,我想移动到L:a\b\1\d\f\e。

我在Python编程方面是一个新手,我已经解决了一些难题,但我遇到了很多麻烦。下面是我的一些代码,但我认为它不会很有用。

对于这段代码,我必须将文件和.py文件一起放到CMD中。它显示出我想要的名称(但带有我不想要的额外空格),它实际上不重命名文件,并且只对我放入CMD中的特定文件进行重命名,而我更愿意让代码查看所有子文件夹并自动执行该操作。请注意,我的代码(特别是第6-7行)特定于我想要的文件夹的实际命名方式,出于保密原因,我混淆了树路径的名称,这只是为了更容易理解。

代码语言:javascript
复制
from sys import argv
script, filename = argv
txt = open(filename)
print "Here's your file %r:" % filename
string = "%r" % filename
print string [94:-17]
line = string [94:-17]
line = "%r" % line
for char in '\\':
line = line.replace (char, ' ')
print line

做一些功课,这段代码将搜索并重命名我想要的目录中的所有文件,但是它没有按照我想要的方式命名它。再说一次,这不是真的有帮助,但这是我所拥有的。

代码语言:javascript
复制
import glob, os
def rename(dir, pattern, titlePattern):
for pathAndFilename in glob.iglob(os.path.join(dir, pattern)):
title, ext = os.path.splitext(os.path.basename(pathAndFilename))
os.rename(pathAndFilename,
os.path.join(dir, titlePattern % title + ext))
rename(r'L:\a\b\c\', r'*.pdf', r'new(%s)'

然后,对于实际的文件移动,我还没有编写任何代码-我非常迷茫。我知道这有很多工作要做,但如果有人能帮我,我会非常感激。

EN

回答 1

Stack Overflow用户

发布于 2014-01-24 18:39:45

因为我在搜索bash的类似解决方案时发现了这篇文章,所以我为那些遵循相同道路的人发布了一个答案:

代码语言:javascript
复制
#!/bin/bash

mkdir extracted
for var in "$@"
do
    for f in `find sources -name "$var"`
    do
        groupname=`echo $f | cut -d'/' -f 3`
        filename=`echo ${f##*/}`
        cp "$f" extracted/"${groupname}_$filename" -v
    done
done
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14588591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档